Entrar
Últimos assuntos
» Como ajustar velocidade de cada frame da animação no game makerpor 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
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
#COL Aula 02 - Colisões retangulares
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).
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:
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):
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;
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)
Re: #COL Aula 02 - Colisões retangulares
parabéns cara,ótimo tuto,vai me ajudar bastante!!
SIGILOSO- Games Ranking :
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 :
x 0 x 2 x 0
x 4 x 2 x 1
x 0 x 0 x 0
Re: #COL Aula 02 - Colisões retangulares
@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!
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!
Re: #COL Aula 02 - Colisões retangulares
muito bom vai ajuda muito
André Gustavo- Data de inscrição : 16/06/2009
Reputação : 1
Número de Mensagens : 278
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #COL Aula 02 - Colisões retangulares
Oo ótimo tuto. nem sabia q dava pra fazer isso...
esperando a segunda parte
esperando a segunda parte
Ruan- Data de inscrição : 10/06/2008
Reputação : 0
Número de Mensagens : 184
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #COL Aula 02 - Colisões retangulares
Otimo tutorial, assim como os outros.
Uma pergunta: o que significa aquele zero depois de true? Alterar ele muda alguma coisa?
Goodbye
Uma pergunta: o que significa aquele zero depois de true? Alterar ele muda alguma coisa?
Goodbye
Naut2006- Data de inscrição : 11/08/2009
Reputação : 0
Número de Mensagens : 213
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #COL Aula 02 - Colisões retangulares
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!
FLWS!
Re: #COL Aula 02 - Colisões retangulares
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
Mais uma pergunta, tem como colocar no lugar do objeto colocar solid, para que ele perceba quando encostou em algo marcado como solido?
Goodbye
Naut2006- Data de inscrição : 11/08/2009
Reputação : 0
Número de Mensagens : 213
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #COL Aula 02 - Colisões retangulares
Para isso existe um código mais simples:
Agora nos próximos tutus eu colocarei as colisões mais simples.
FLWS!
- 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!
Re: #COL Aula 02 - Colisões retangulares
Fale mestre Alex FC...
po o papo é o seguinte comecei a fazer o tal jogo stealth e talz, dai fiz o seguinte:
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...
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)
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- Data de inscrição : 03/08/2009
Reputação : 0
Número de Mensagens : 23
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: #COL Aula 02 - Colisões retangulares
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:
Bom se eu entendi direito é assim, caso ele colida para destruir um objeto que é mais de um é outro código. vlw?
FLWS!
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!
Re: #COL Aula 02 - Colisões retangulares
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
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
Re: #COL Aula 02 - Colisões retangulares
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!
Recomendo você ver a 4ª parte deste tutorial. São as colisões simples, depois você ve esta e as outras duas. vlw?
FLWS!
Re: #COL Aula 02 - Colisões retangulares
mto massa... assim ajuda a fazer jogo de plataforma tipo mário
Re: #COL Aula 02 - Colisões retangulares
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!
- Melhora na grafia e explicação;
- Atualização das imagens.
Ps: As próximas aulas serão atualizadas em breve.
FLWS!
Tópicos semelhantes
» #COL Aula 03 - Colisões lineares
» #COL Aula 01 - Colisões simples
» #COL Aula 04 - Colisões circulares e de pontos
» [Vídeo-Aula]Aula 4.1 - Usando funções básicas do draw
» Aula 3 - Puzzle - Todas os Modos da Aula 3 Aqui!
» #COL Aula 01 - Colisões simples
» #COL Aula 04 - Colisões circulares e de pontos
» [Vídeo-Aula]Aula 4.1 - Usando funções básicas do draw
» Aula 3 - Puzzle - Todas os Modos da Aula 3 Aqui!
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|