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
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


#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