Erro em conseguir efeito de piercing na bala

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

Resolvido Erro em conseguir efeito de piercing na bala

Mensagem por vitor_liminha123 em Dom 01 Jun 2014, 14:20

Olá pessoal. Eu estava programando meu TD aqui, e queria tentar fazer uma bala atravessar 3 inimigos antes de "morrer". Eu tentei um código aqui para que a bala não batesse no mesmo inimigo mais de uma vez, mas ele fica nos extremos: Ou ele bate em um só e ignora os outros inimigos, ou ele acerta infinitos inimigos, ultrapassando o número de piercing que eu queria que fizesse.
Aqui está o código:
(código do inimigo, ao colidir com a bala)
Código:
if other.kind=16 or other.kind=17 {              /// a var kind é o tipo de bala.
    if other.pierce=noone or !other.pierce=id {        /// a var pierce é da bala.
        other.pierce=id;         /// transforma o pierce no id do inimigo, pra que não o acerte mais de uma vez.
        hp-=other.damage;                                  /// inimigo perdendo vida.
        other.pierce_hp-=1;                                 /// retira um pierce da bala
    }
    if other.pierce_hp=0 or other.pierce_hp<0 {                ///se a bala acabar o pierce.
        with (other) {
            instance_destroy();                            /// bala some
        }
    }
}
Obs: Eu utilizei o debug e parece que a variável pierce_hp da bala diminui uma vez só, por isso que fica com o piercing infinito.

vitor_liminha123

Número de Mensagens : 510
Idade : 18
Data de inscrição : 16/08/2010
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.newgrounds.com/tanber

Voltar ao Topo Ir em baixo

Resolvido Re: Erro em conseguir efeito de piercing na bala

Mensagem por PedroX em Dom 01 Jun 2014, 15:12

!other.pierce=id

O certo seria:
other.pierce!=id

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Resolvido Re: Erro em conseguir efeito de piercing na bala

Mensagem por vitor_liminha123 em Dom 01 Jun 2014, 15:25

Então esse símbolo você põe depois da igualdade? surpreso
Hmmm, parece que funcionou! Puxa, obrigado mesmo!

vitor_liminha123

Número de Mensagens : 510
Idade : 18
Data de inscrição : 16/08/2010
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.newgrounds.com/tanber

Voltar ao Topo Ir em baixo

Resolvido Re: Erro em conseguir efeito de piercing na bala

Mensagem por PedroX em Dom 01 Jun 2014, 15:40

! é um operador e != é outro.

! inverte o valor booleano.
!= significa diferente

Digamos que você tenha o código:

Código:
abc = 1;

if (!abc = 1)
{

}
Neste caso, !abc tem o valor false (1 é true, e o inverso de true é false). Aí você compara ele com 1 (que é true), então não será executado nada.

Agora suponha que você tenha o código em um objeto:

Código:
 //suponhamos que o id do objeto seja 100008

abc = 10;


if (!abc = id) // é o mesmo que if (false = id), o que não é verdade
{

}

if (abc != id) // é o mesmo que if (10 != id)
{

}

Lembrando que para o Game Maker valores acima de 0.5 são considerados true, e abaixo de 0.5, false.

if (0.2) // não vai executar, 0.2 é false
if (0.6) // vai executar, 0.6 é true

E por aí vai...

Faça o teste:
Código:
for(i=-1; i<=1; i+=0.1)
{
if (i) s='true'; else s='false';
show_message(string(i)+' é '+s);
}

Só que para isso você não pode usar ==true nem ==false, porque o GM transforma true em 1 e false em 0...

Não sei se isso é um bug, ou é proposital... Mas você quase nunca usará.

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Resolvido Re: Erro em conseguir efeito de piercing na bala

Mensagem por vitor_liminha123 em Dom 01 Jun 2014, 15:48

Muito obrigado PedroX, você esclareceu muito bem a diferença entre o posicionamento do símbolo! Muito obrigado novamente!  love 

vitor_liminha123

Número de Mensagens : 510
Idade : 18
Data de inscrição : 16/08/2010
Reputação : 12
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

http://www.newgrounds.com/tanber

Voltar ao Topo Ir em baixo

Resolvido Re: Erro em conseguir efeito de piercing na bala

Mensagem por Conteúdo patrocinado Hoje à(s) 10:32


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