Conectar-se
Quem está conectado
31 usuários online :: 3 usuários cadastrados, Nenhum Invisível e 28 Visitantes

Katerp, Koelho, Willy

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Data de inscrição : 16/08/2010
Número de Mensagens : 510
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://www.newgrounds.com/tanber

Erro em conseguir efeito de piercing na bala

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.
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6036
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Erro em conseguir efeito de piercing na bala

em Dom 01 Jun 2014, 15:12
Reputação da mensagem: 100% (1 votos)
!other.pierce=id

O certo seria:
other.pierce!=id
avatar
Data de inscrição : 16/08/2010
Número de Mensagens : 510
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://www.newgrounds.com/tanber

Re: Erro em conseguir efeito de piercing na bala

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!
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6036
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   :
   :
   :
Ver perfil do usuário

Re: Erro em conseguir efeito de piercing na bala

em Dom 01 Jun 2014, 15:40
Reputação da mensagem: 100% (1 votos)
! é 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á.
avatar
Data de inscrição : 16/08/2010
Número de Mensagens : 510
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuáriohttp://www.newgrounds.com/tanber

Re: Erro em conseguir efeito de piercing na bala

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 
Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum