[RESOLVIDO] Problemas com destruição de object

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

Resolvido [RESOLVIDO] Problemas com destruição de object

Mensagem por kyoshiwarrior em Sab 30 Jul 2011, 17:39

Bom, pessoal, eu tenho um problema seríssimo, eu quero fazer alguns lacaios no meu jogo, porém na hora de destruí-los, tem alguma coisa que os une, que faz com que se destruir um, destroi o outro, mesmo ele sendo de sprites diferentes, sem eu ter usado a opção Duplicate. Para vocês entenderem melhor, eu vou colocar meu projeto, aí vcs usam as setas para se movimentar e o espaço para atirar. É preciso alguns tiros para destruí-lo. Ah! E sem falar que a função move_towards tbm ñ tá funcionando.
Projeto


Última edição por kyoshiwarrior em Ter 02 Ago 2011, 12:48, editado 1 vez(es)

kyoshiwarrior

Número de Mensagens : 9
Data de inscrição : 13/07/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Problemas com destruição de object

Mensagem por Igor KinGamer em Seg 01 Ago 2011, 17:07

O problema é que você está usando a variável embutida do GM "health". Só que essa variável é global, isto é, não há uma variável para cada instância, há apenas uma global que é acessada por todas as instâncias.

O que está acontecendo é isso:
Há os dois objetos, e a variável health, que é global, recebe um valor quando cada instância é criada.
Então, ao atirar em qualquer uma das duas instâncias, a variável health é diminuída. Mas como ela é global, tanto os tiros acertados em uma quanto em outra instância diminuirão a mesma variável. Então, quando você testa se a vida acabou, todas as instância são destruídas, por usarem a mesma variável.

A solução é criar uma variável (com o nome que você quiser, o mais óbvio é "vida") e então testar se ela é menor ou igual a 0 para destruir o objeto. Menor ou igual em vez de simplesmente igual por que, por exemplo, se a vida for 1 e um ataque gastar 2 ou mais, vai pular direto para um valor menor que 0.
No Create:
Código:
vida = n; // Sendo n quanto você quiser
No Step:
Código:
if (vida <= 0)
instance_destroy();
__________________

Quanto à função move_towards(), não é que não está funcionando. É que você colocou no Create. Ou seja, no step em que é criada, somente nele, a instância se move. O certo é colocar no Step.
Mas o melhor seria você testar se a criatura pode ver o player (não há nenhuma parede entre eles), senão o bicho irá com tudo na direção da parede. Para fazer isso, você pode usar collision_line() (link para tutorial do AlexFC). E também, se quiser, pode usar mp_potential_step() em vez de move_towards_point(), se quiser que o inimigo se mova desenfreadamente em direção ao player sem atravessar paredes.
__________________

Só mais uma dica: vi que você criou quatro objetos para o ataque. Em vez disso, você pode criar só um, e definir a direção dele na hora que for criado pelo player. Você pode fazer isso assim:
Step:
Código:
if (keyboard_check_pressed(vk_space) && ...)
{
    tiro = instance_create(...);
    if (tiro_cima) // Isso é o mesmo que "tiro_cima == true"
    tiro.direction = 90; // 90 graus é para cima
    if (tiro_esquerda)
    tiro.direction = 180;
    if (tiro_baixo)
    tiro.direction = 270;
    if (tiro_direita)
    tiro.direction = 360;
    tiro.speed = 8;
}

Talvez você prefira deixar como está, mas fazer assim dá menos trabalho. Por exemplo, se você precisar mudar alguma coisa no objeto do tiro, do jeito que está, você precisar ir em um por um mudando. Se houver só um e você fizer como coloquei aqui, terá que alterar apenas esse único existente.

Igor KinGamer

Número de Mensagens : 890
Idade : 21
Data de inscrição : 26/09/2008
Reputação : 11
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Problemas com destruição de object

Mensagem por kyoshiwarrior em Seg 01 Ago 2011, 21:17

Muito obrigado, mesmo, você me ajudou muito. Valeu! cheers

RESOLVIDO!!!

kyoshiwarrior

Número de Mensagens : 9
Data de inscrição : 13/07/2011
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Resolvido Re: [RESOLVIDO] Problemas com destruição de object

Mensagem por Conteúdo patrocinado Hoje à(s) 20:08


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