GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Como ajustar velocidade de cada frame da animação no game maker
por Ralphed Ontem à(s) 18:28

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» Alguém aqui já ganha dinheiro com seus games?
por Joton Seg 15 Jan 2024, 16:49

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21

» como aumentar o obj sem aumentar a colisão??
por GabrielXavier Qua 10 Jan 2024, 07:21

» Asteroid Core - Early Acesse Update [0.2.0.0]
por JOZ. Seg 08 Jan 2024, 14:39

» Versionamento de código com GitHub
por GabrielXavier Seg 08 Jan 2024, 07:32

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por kolesovsup Sex 29 Dez 2023, 07:16


#COL Aula 02 - Colisões retangulares

+5
Naut2006
Ruan
André Gustavo
SIGILOSO
All-x
9 participantes

Ir para baixo

#COL Aula 02 - Colisões retangulares Empty #COL Aula 02 - Colisões retangulares

Mensagem por All-x Ter 11 Ago 2009, 18:40

COLISÕES



Aula 02 - Colisões retangulares



(Atualizado 08/02/2015)

Bem-vindos a segunda parte das aulas sobre colisões, nesta aula aprenderemos sobre colisões retangulares, que é um sistema onde se cria um retângulo para detectar as colisões. Mas primeiro você precisa saber o seguinte:

1-Você deve saber a altura e a largura da sprite.

Vou usar uma sprite de 32 (altura)x32 (largura).

#COL Aula 02 - Colisões retangulares Direita

2-Saber como localizar cada pixel usando o editor de imagem do GM:

-Passe o mouse no pixel que você quer identificar e veja as posições na parte inferior da janela:

#COL Aula 02 - Colisões retangulares Ss_01

3-Entender o que é posição relativa e posição absoluta:

x+5 e y-5 representam posições relativas ao objeto à ela atribuida.
x=5 e y=5 representam posições absolutas ao objeto atribuido.
x+=5 e y-=5 representam mudança de posição.

Vão ser dois objetos principais: o player e o inimigo. Estudaremos o código da engine abaixo:





Começaremos com uma colisão na lateral direita do player. Va ao evento Create do player:

Código:
//Guarda na variável a ID do inimigo que ficar na área de colisão
colide_inimigo = collision_rectangle(x+31, y, x+46, y+32, inimigo, 0, 0)

O mesmo código está presente no step, para checarmos a colisão em tempo real.

Explicação de cada parte:

Como você deve estar vendo há duas posições x e duas y. Cada uma delas é um lado do retângulo (por isso o nome collision_rectangle):

#COL Aula 02 - Colisões retangulares SS_01

x+31: Lado esquerdo do retângulo;

y: Parte de cima do retângulo;

x+46: Lado direito do retângulo;

y+31: Parte de baixo do retângulo;

#COL Aula 02 - Colisões retangulares SS_02

obj: Objeto que checaremos se está na área de colisão;

true: Colisão precisa checa cada pixel da sprite do inimigo (Caso a sua máscara de colisão seja precisa). Deixando false ele usa um retângulo para detectar a colisão;

notme:
Caso você esteja checando a colisão de um objeto com instâncias dele mesmo e queira que a colisão não pegue essa instancia emissora, coloque como true. Caso contrário coloque false.

A função collision_rectangle retorna dois valores:

- -4 quando não há nenhuma instância do obj (Objeto que colocamos na função) na área de colisão;

- A ID (Número que identifica cadainstância de um objeto) quando há uma instância do obj na área de colisão.

Ela é considerada uma expressão verdadeira sempre que houver uma instância do obj na área de colisão, pois o número retornado é maior que zero:

Código:
//Desenha a frase se estiver colidindo com o inimigo
if player.colide_inimigo
{
    draw_text(4,4,"Esse bicho feio tá na área de colisão, sua ID é:"+string(player.colide_inimigo))
}

Veja que para ter certeza de que a área de colisão está correta, nós desenhamos um retângulo vermelho no evento Draw do objeto controle:

Código:
//Desenha retângulo nas mesmas coordenadas dadas no collision_rectangle
draw_rectangle(player.x+31, player.y, player.x+46, player.y+31, 0)

Ainda esta com dúvida? Então pergunte que eu respondo! XD



FLWS!


Última edição por Alex FC em Seg 09 Fev 2015, 20:20, editado 15 vez(es) (Motivo da edição : Atualização)
All-x
All-x

Games Ranking : Nota A

Notas recebidas : B A
Data de inscrição : 20/12/2008
Reputação : 189
Número de Mensagens : 2571
Prêmios : #COL Aula 02 - Colisões retangulares Empty

Medalhas x 0 Tutoriais x 25 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Javascript
  • C ou C++


https://redscreensoft.com

Ir para o topo Ir para baixo

#COL Aula 02 - Colisões retangulares Empty Re: #COL Aula 02 - Colisões retangulares

Mensagem por SIGILOSO Ter 11 Ago 2009, 18:49

parabéns cara,ótimo tuto,vai me ajudar bastante!!
afro
SIGILOSO
SIGILOSO

Games Ranking : Nota A

Notas recebidas : A+A+A+A+A+A+A
Data de inscrição : 06/06/2009
Reputação : 39
Número de Mensagens : 2267
Prêmios : #COL Aula 02 - Colisões retangulares Empty

Medalhas x 0 Tutoriais x 2 Moedas x 0

Ouro x 4 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

#COL Aula 02 - Colisões retangulares Empty Re: #COL Aula 02 - Colisões retangulares

Mensagem por All-x Ter 11 Ago 2009, 18:52

@Tópico

Algum administrador mova o tópico para "Tutoriais da equipe GMBR" fazendo um favor, me esqueci que tinha uma área só pra staff.

@SIGILOSO

Obrigado! É isso mesmo que eu quero, que ajude muita gente. XD

FLWS!
All-x
All-x

Games Ranking : Nota A

Notas recebidas : B A
Data de inscrição : 20/12/2008
Reputação : 189
Número de Mensagens : 2571
Prêmios : #COL Aula 02 - Colisões retangulares Empty

Medalhas x 0 Tutoriais x 25 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Javascript
  • C ou C++


https://redscreensoft.com

Ir para o topo Ir para baixo

#COL Aula 02 - Colisões retangulares Empty Re: #COL Aula 02 - Colisões retangulares

Mensagem por André Gustavo Ter 11 Ago 2009, 19:17

muito bom vai ajuda muito Very Happy
André Gustavo
André Gustavo

Data de inscrição : 16/06/2009
Reputação : 1
Número de Mensagens : 278
Prêmios : #COL Aula 02 - Colisões retangulares Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

#COL Aula 02 - Colisões retangulares Empty Re: #COL Aula 02 - Colisões retangulares

Mensagem por Ruan Ter 11 Ago 2009, 22:38

Oo ótimo tuto. nem sabia q dava pra fazer isso...
esperando a segunda parte afro
Ruan
Ruan

Data de inscrição : 10/06/2008
Reputação : 0
Número de Mensagens : 184
Prêmios : #COL Aula 02 - Colisões retangulares Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

#COL Aula 02 - Colisões retangulares Empty Re: #COL Aula 02 - Colisões retangulares

Mensagem por Naut2006 Qua 12 Ago 2009, 22:32

Otimo tutorial, assim como os outros.

Uma pergunta: o que significa aquele zero depois de true? Alterar ele muda alguma coisa?

Goodbye Happy
Naut2006
Naut2006

Data de inscrição : 11/08/2009
Reputação : 0
Número de Mensagens : 213
Prêmios : #COL Aula 02 - Colisões retangulares Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

#COL Aula 02 - Colisões retangulares Empty Re: #COL Aula 02 - Colisões retangulares

Mensagem por All-x Qui 13 Ago 2009, 00:00

Ah é mesmo. Essa parte nem eu sei direito. É algo como checar se esta a coledir com ele mesmo. Mas eu sempre deixo em 0. Se alguém souber explicar por favor poste aqui vlw?

FLWS
!
All-x
All-x

Games Ranking : Nota A

Notas recebidas : B A
Data de inscrição : 20/12/2008
Reputação : 189
Número de Mensagens : 2571
Prêmios : #COL Aula 02 - Colisões retangulares Empty

Medalhas x 0 Tutoriais x 25 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Javascript
  • C ou C++


https://redscreensoft.com

Ir para o topo Ir para baixo

#COL Aula 02 - Colisões retangulares Empty Re: #COL Aula 02 - Colisões retangulares

Mensagem por Naut2006 Qui 13 Ago 2009, 00:05

Blz então =D

Mais uma pergunta, tem como colocar no lugar do objeto colocar solid, para que ele perceba quando encostou em algo marcado como solido?

Goodbye Happy
Naut2006
Naut2006

Data de inscrição : 11/08/2009
Reputação : 0
Número de Mensagens : 213
Prêmios : #COL Aula 02 - Colisões retangulares Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

#COL Aula 02 - Colisões retangulares Empty Re: #COL Aula 02 - Colisões retangulares

Mensagem por All-x Qui 13 Ago 2009, 00:25

Para isso existe um código mais simples:
Código:

if not(place_free(x+5,y)){função}///se não estiver livre de colisão com sólidos na direita, função acontece.

Agora nos próximos tutus eu colocarei as colisões mais simples.

FLWS!
All-x
All-x

Games Ranking : Nota A

Notas recebidas : B A
Data de inscrição : 20/12/2008
Reputação : 189
Número de Mensagens : 2571
Prêmios : #COL Aula 02 - Colisões retangulares Empty

Medalhas x 0 Tutoriais x 25 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Javascript
  • C ou C++


https://redscreensoft.com

Ir para o topo Ir para baixo

#COL Aula 02 - Colisões retangulares Empty Re: #COL Aula 02 - Colisões retangulares

Mensagem por Pratagy Dom 16 Ago 2009, 16:19

Fale mestre Alex FC...
po o papo é o seguinte comecei a fazer o tal jogo stealth e talz, dai fiz o seguinte:
Código:
if collision_rectangle(x+31,y+31,x,y+131,pinkchar,brick,true,0)
a ideia foi de que um retangulo com 100 pixels no rosto do inimigo, colidir com o player (pinkchar), com o bloco (brick) impedindo de ser visto e talz, mas ai, deu erro (eu coloquei uma função qualquer, mas o q ele falou que da erro é essa parte, entoa nem postei a função q acontece)...
no que eu errei ai?
outra coisa: como faço para que a cada sprite tenha um retangulo de colisao diferente? por exemplo um cara de frente nao tem o mesmo retangulo de colisao do q um cara de costas...
vlw, espero q tenha dado pra entender...
Pratagy
Pratagy

Data de inscrição : 03/08/2009
Reputação : 0
Número de Mensagens : 23
Prêmios : #COL Aula 02 - Colisões retangulares Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

#COL Aula 02 - Colisões retangulares Empty Re: #COL Aula 02 - Colisões retangulares

Mensagem por All-x Dom 16 Ago 2009, 16:43

Para começar você colocou dois objetos:

if collision_rectangle(x+31,y+31,x,y+131,pinkchar,brick,true,0)

é só um:

if collision_rectangle(x+31,y+31,x,y+131,pinkchar,true,0)

Assim funciona, mas me explica o que você quer fazer que eu ajudo. vlw?

E pra muda o dependendo da imagem é só fazer isso:

Código:
if sprite_index=spr_direita
{if collision_rectangle(x,y,x+36,y+31,pinkchar,true,0){função}}

if sprite_index=spr_esquerda
{if collision_rectangle(x,y,x-5,y+31,pinkchar,true,0){função}}

Bom se eu entendi direito é assim, caso ele colida para destruir um objeto que é mais de um é outro código. vlw?

FLWS!
All-x
All-x

Games Ranking : Nota A

Notas recebidas : B A
Data de inscrição : 20/12/2008
Reputação : 189
Número de Mensagens : 2571
Prêmios : #COL Aula 02 - Colisões retangulares Empty

Medalhas x 0 Tutoriais x 25 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Javascript
  • C ou C++


https://redscreensoft.com

Ir para o topo Ir para baixo

#COL Aula 02 - Colisões retangulares Empty Re: #COL Aula 02 - Colisões retangulares

Mensagem por vareta-maker Qui 27 Ago 2009, 21:29

uma pequena pergunta
eu sei que ja sou veterano nesse site mas eu
sou tão lesado que não consegui faze aquele trem la dos fantasminhas sim eu sei fase o personagens move alias a unicacoisa que sei sei ate gravidade e salto mas só

enfim vcs acham que é aconselhavel que eu comece dessa lição? se não for muita lesalidade da minha parte
vareta-maker
vareta-maker

Data de inscrição : 29/05/2008
Reputação : 0
Número de Mensagens : 7
Prêmios : #COL Aula 02 - Colisões retangulares Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://www.orkut.com/Home.aspx

Ir para o topo Ir para baixo

#COL Aula 02 - Colisões retangulares Empty Re: #COL Aula 02 - Colisões retangulares

Mensagem por All-x Qui 27 Ago 2009, 21:53

Recomendo você ver primeiro as aulas do reddragon e do joão neto. Mas se você acha que ja é bom o bastante...

Recomendo você ver a 4ª parte deste tutorial. São as colisões simples, depois você ve esta e as outras duas. vlw?

FLWS!
All-x
All-x

Games Ranking : Nota A

Notas recebidas : B A
Data de inscrição : 20/12/2008
Reputação : 189
Número de Mensagens : 2571
Prêmios : #COL Aula 02 - Colisões retangulares Empty

Medalhas x 0 Tutoriais x 25 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Javascript
  • C ou C++


https://redscreensoft.com

Ir para o topo Ir para baixo

#COL Aula 02 - Colisões retangulares Empty Re: #COL Aula 02 - Colisões retangulares

Mensagem por Henrique_GJ Seg 04 Jan 2010, 15:43

mto massa... assim ajuda a fazer jogo de plataforma tipo mário
Henrique_GJ
Henrique_GJ

Data de inscrição : 30/12/2009
Reputação : 4
Número de Mensagens : 1344
Prêmios : #COL Aula 02 - Colisões retangulares Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Java
  • C ou C++


http://sitedosjogos.forumeiros.com

Ir para o topo Ir para baixo

#COL Aula 02 - Colisões retangulares Empty Re: #COL Aula 02 - Colisões retangulares

Mensagem por Assassino Qua 01 Set 2010, 16:05

ótimo tutorial ! e bastante funcional ! Smile
Assassino
Assassino

Data de inscrição : 13/08/2010
Reputação : 6
Número de Mensagens : 390
Prêmios : #COL Aula 02 - Colisões retangulares Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

http://rockstarfamilies.blogspot.com/

Ir para o topo Ir para baixo

#COL Aula 02 - Colisões retangulares Empty Re: #COL Aula 02 - Colisões retangulares

Mensagem por All-x Seg 22 Out 2012, 21:32

Aula atualizada - 22/10/12:

- Melhora na grafia e explicação;
- Atualização das imagens.

Ps: As próximas aulas serão atualizadas em breve.

FLWS!
All-x
All-x

Games Ranking : Nota A

Notas recebidas : B A
Data de inscrição : 20/12/2008
Reputação : 189
Número de Mensagens : 2571
Prêmios : #COL Aula 02 - Colisões retangulares Empty

Medalhas x 0 Tutoriais x 25 Moedas x 0

Ouro x 2 Prata x 1 Bronze x 1

Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Javascript
  • C ou C++


https://redscreensoft.com

Ir para o topo Ir para baixo

#COL Aula 02 - Colisões retangulares Empty Re: #COL Aula 02 - Colisões retangulares

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos