[Resolvido]Ajuda com tower defense

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

Resolvido [Resolvido]Ajuda com tower defense

Mensagem por Mentos e Coca-cola em Ter 09 Ago 2011, 09:28

Bom pessoal(¬¬), eu e meu amg estamos no começo de um jogo de Defender A Base, mais eu tow querendo saber como eu faria p que:
se o obj_inimigo estiver 200 pixels ou menos, perto do obj_gun, que o obj_gun atire o obj_tiro, mais que saia só daquele obj_gun que o obj_inimigo está perto, porque tem mais obj_gun na room, alguem entendeu alguma coisa Razz ?

PS: o jogo é TOP-DOWN(acho eu)Razz

Razz:P



Última edição por Mentos e Coca-cola em Ter 09 Ago 2011, 16:04, editado 1 vez(es)

Mentos e Coca-cola

Ranking : Nota D
Número de Mensagens : 627
Idade : 18
Data de inscrição : 30/06/2010
Notas recebidas : D
Reputação : 15
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Ajuda com tower defense

Mensagem por Markituh em Ter 09 Ago 2011, 10:22

Há uma função que checa a distância (em pixels) entre dois objetos. Ela é distance_to_object e seu único argumento é o objeto para checar a distância. Então, no Step objeto que atira (obj_gun):
Código:
if pode_atirar and distance_to_object(obj_inimigo) <= 200
/* Se pode atirar for igual a true(a comparação é implícita, mas há) e a distância entre mim e o objeto inimigo for menor ou igual a 200 */
{
instance_create(x,y,obj_tiro) // Cria o tiro
pode_atirar = false
alarm[0] = 30  // Recarrega o tiro
}
A variável "pode_atirar" é básica, caso contrário seriam criados um monte de obj_tiro. O alarm[0] é básico também, segue a mesma linhagem da variável. Sobre haver vários objetos:
GM Help escreveu:distance_to_object(obj) Returns the distance of the instance to the nearest instance of object obj. (If the instance or object does not have a sprite or mask, the result of the function is undefined.)
A função retorna a distância da instância em que o código está para a instância mais próxima, ou seja, a que estiver na frente, do objeto "obj". O tio Mark pensou nisso também tongue

Nota: Há um trecho que diz: "If the distance or object..." - esse trecho quer dizer que se a instância não tem uma sprite ou mask, o resultado que a função vai retornar é indefinido.


Última edição por Markituh em Ter 09 Ago 2011, 10:24, editado 2 vez(es) (Razão : Nota)

___________

"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

Resolvido Re: [Resolvido]Ajuda com tower defense

Mensagem por Mentos e Coca-cola em Ter 09 Ago 2011, 10:30

foi mal mais não funcionou, será que alguem topa consertar a engine ?

Mentos e Coca-cola

Ranking : Nota D
Número de Mensagens : 627
Idade : 18
Data de inscrição : 30/06/2010
Notas recebidas : D
Reputação : 15
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Ajuda com tower defense

Mensagem por saim em Ter 09 Ago 2011, 11:25

Deveria funcionar. O que deu errado?

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Ajuda com tower defense

Mensagem por Mentos e Coca-cola em Ter 09 Ago 2011, 11:28

os inimigos chegam perto mais nada acontece, eu tembém achei estranho

Mentos e Coca-cola

Ranking : Nota D
Número de Mensagens : 627
Idade : 18
Data de inscrição : 30/06/2010
Notas recebidas : D
Reputação : 15
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Ajuda com tower defense

Mensagem por saim em Ter 09 Ago 2011, 11:57

Algumas sugestões do que pode estar errado:
- pode_atirar pode estar com o valor “false” (o Markituh não pôs no texto, mas você deve usar o alarm pra resetar a variável pra “true”)
- a distância pode estar pequena (embora eu ache que 200 sejam suficientes). Tente aumentar pra 5000, só pra testar.
- o inimigo pode não ser chamado de obj_inimigo. Se houver diferença nos nomes, corrija.
- o tiro está sendo criado sem velocidade nenhum, dando a impressão que ele não está lá. Mostre, em algum debug, o valor de "instance_number(obj_tiro)".
Se não for nenhuma dessas possibilidades, volte que pensaremos em algo novo. Se alguma se confirmar, a correção é simples.

Edit:
de fato, não está funcionando quando eu ponho objetos sem sprites - tanto a torre quanto o inimigo. Porém, ao definir uma sprite e uma mask pra esses objetos, ele passa a criar os tiros.
O código que estou usando é:
Código:
if (podeAtirar==true && distance_to_object(obj_inimigo)<=distMin){//point_distance(x, y, obj_inimigo.x, obj_inimigo.y)<=distMin){//
   var vitima;
   vitima=collision_circle(x, y, distMin, obj_inimigo, 1, 1);
   with (instance_create(x, y, obj_bala)){
      dir=point_direction(other.x, other.y, obj_inimigo.x, obj_inimigo.y);//vitima.x, vitima.y);
      }
   alarm[0]=cadencia;
   podeAtirar=false;
   }
os códigos em comentário são testes que eu usei até fazer funcionar. Eles também funcionam, em muitos casos, mas podem gerar alguns bugs, principalmente o "vitima.x, vitima.y);". Parece que a distância entre os objetos pode ser menor que distMin sem que a collision_circle retorne "true".

saim

Ranking : Nota B
Número de Mensagens : 2964
Idade : 38
Data de inscrição : 14/01/2011
Notas recebidas : C-D-A-B
Reputação : 121
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 3

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Ajuda com tower defense

Mensagem por Mentos e Coca-cola em Ter 09 Ago 2011, 16:03

resolvido, muito obrigado ae, pode trancar o tópico

Mentos e Coca-cola

Ranking : Nota D
Número de Mensagens : 627
Idade : 18
Data de inscrição : 30/06/2010
Notas recebidas : D
Reputação : 15
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Resolvido Re: [Resolvido]Ajuda com tower defense

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


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