Área de atrito do sprite

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Área de atrito do sprite

Mensagem por rafarubim em Ter 10 Maio 2011, 18:47

Ok, pessoal, eu pesquisei e não achei nada assim então tenho duas dúvidas:

1-Estou fazendo meu 1º jogo com gravidade (não que eu seja tão inexperiente, mas não sou tão bom, né ;] ), e~estou com uma dúvida no seguinte: se vou fazer uma pedra, por exemplo e faço uma colisão com ela, preciso de um código diferente do que se eu pular em cima dela. Como eu faço para reconhecer se a colisão está ocorrendo em certa área do sprite? (tentei com máscaras mas não deu certo)

2- Se eu for para a direita, como faço para a tela me acompanhar, assim como nos jogos do mario?[[[Respondida]]]

Vlw pela ajuda!


Última edição por rafarubim em Ter 10 Maio 2011, 19:16, editado 1 vez(es)

rafarubim

Número de Mensagens : 65
Data de inscrição : 20/01/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Área de atrito do sprite

Mensagem por Supersonic933 em Ter 10 Maio 2011, 19:03

1 - Faça estilo de pulo de inimigo:

Colisão Player com inimigo:
Código:

if (y >= other.y)
{
    instance_destroy(); //destroi a bolinha
    live = live - 1; //diminui uma vida
} else
{
  with (other)
  {
      instance_destroy(); //destroi o inimigo nesse caso  o 'other'
      score = score + 100; //aumenta o seu ponto.
  }
}

2 - Acesse este tuto: http://gmbr.forumeiros.com/t12502-tutorial-de-view

Supersonic933

Ranking : Nota E
Número de Mensagens : 396
Data de inscrição : 14/02/2011
Notas recebidas : E
Reputação : 13
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://planetaanalisandogames.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Área de atrito do sprite

Mensagem por fredcobain em Ter 10 Maio 2011, 19:10

Use a função place_meeting().

Lembre-se de ajustar a máscara (prefiro mascaras retangulares).

fredcobain

Ranking : Sem avaliações
Número de Mensagens : 691
Idade : 35
Data de inscrição : 14/04/2011
Reputação : 162
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Área de atrito do sprite

Mensagem por rafarubim em Ter 10 Maio 2011, 19:13

A pergunta 1 não é isso, é realmente uma pedra em que se você encosta nela hspeed=0 e se pula nela vspeed=0 e outros codigos meus.
EDIT: como se usa a função place_meeting?
Vlw pela 2 Smile

rafarubim

Número de Mensagens : 65
Data de inscrição : 20/01/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Área de atrito do sprite

Mensagem por Grotle em Ter 10 Maio 2011, 19:24

O place_meeting verifica se há algo colidindo com o objeto nas coordenadas dadas. Por exemplo, se você quiser verificar se há uma pedra abaixo do player, você deve fazer isso:
if place_meeting(x,y+8,obj_pedra) //se houver uma pedra oito pixels abaixo do player...
{
//executa uma ação
}


Se você quiser verificar se há uma pedra do lado direito do player, você deve fazer isso:
if place_meeting(x+8,y,obj_pedra) //se houver uma pedra oito pixels à direita do player...
{
//executa uma ação
}


Espero que ajude!
Flws!

Grotle

Ranking : Nota B
Número de Mensagens : 559
Idade : 21
Data de inscrição : 28/02/2010
Notas recebidas : B-B
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://gsogaming.blogspot.com/

Voltar ao Topo Ir em baixo

Re: Área de atrito do sprite

Mensagem por rafarubim em Ter 10 Maio 2011, 19:38

Só o evento de colision está dando certo, eu tento usar o place_meeting e vspeed=0, mas a gravidade continua puxando Sad

rafarubim

Número de Mensagens : 65
Data de inscrição : 20/01/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Área de atrito do sprite

Mensagem por Markituh em Ter 10 Maio 2011, 20:06

Que tipo de gravidade você está usando? Se for:
Código:
if place_free(x,y+1)
{
gravity=1
}
, é bom adicionar um else, caso contrário ficará o tempo todo puxando o objeto para baixo.
Código:
if place_free(x,y+1)
{
gravity=1
}
else
{
gravity=0 // Desativa a gravidade, permitindo assim o player se movimentar.
}

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Área de atrito do sprite

Mensagem por gutto em Sab 16 Jun 2012, 20:57

vc devia tentar usar o dragdrop ao inves do codigo se vc for inexperiente
pra checar uma colisão com qualquer objeto vc pode tentar o seguinte:
1 - tenta no check_empty x=0 y=1 relative
2 - check collision x=0 y=1 relative
3 - (se for determinado obj em q a pedra vai cair) check_object (obj_chao) x=0 y=1 relative
(nos tres casos usei a parte de baixoo como foco mas pode colocar qualquer lado )
na gravidade vc tenta colocar check_empty x=0,y=1 relative gravity direction = 270 gravity = 1 else gravity direction = 270 gravity = 0

gutto

Número de Mensagens : 25
Idade : 20
Data de inscrição : 12/06/2012
Reputação : 1
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Área de atrito do sprite

Mensagem por Conteúdo patrocinado Hoje à(s) 12:29


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum