Conectar-se
Quem está conectado
21 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 21 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Sem avaliações
Data de inscrição : 28/06/2017
Número de Mensagens : 3
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuáriohttps://dragonrod342.deviantart.com/

[DÚVIDA] Colisão de objeto afetar apenas um

em Qua 28 Jun 2017, 22:32
Olá a todos os membros, tudo bem?

Tenho uma dúvida recorrente há algum tempo e não encontrei nenhum modo de sequer procurar como fazer isso...

Vou tentar demonstrar minha dúvida ilustrando-a nesta imagem:


Em um código de colisão comum, os objetos verde e azul estariam colidindo com o ataque em vermelho, então ambos tomariam dano, porém, gostaria de saber como faço para este mesmo ataque atingir apenas um dos alvos de cada vez, seja o que estiver mais próximo, ou o que estiver com o depth maior/menor, ou qualquer modo mais fácil/prático que vossas senhorias conhecerem.

Espero não ter feito essa explicação muito confusa XD
Agradeço-lhes desde já
avatar
Ranking : Sem avaliações
Data de inscrição : 29/06/2017
Número de Mensagens : 8
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 7
Ver perfil do usuáriohttps://discord.gg/9VuJYjr

Re: [DÚVIDA] Colisão de objeto afetar apenas um

em Qui 29 Jun 2017, 02:48
Ao invés de usar um evento de colisão, cheque pela colisão no step do seu inimigo. Caso tenha colisão e o ataque ainda não tenha acertado ninguem, o inimigo vai determinar que o ataque ja acertou alguem.
Código:

var attack_hit;
attack_hit=instance_place(x,y,obj_attack); //Diferente do place_meeting que só retorna boolean, esta função retorna o ID do ataque

if (attack_hit!=noone) //Se tem colisão com alguem
{
    if (attack_hit.hit == false) //Se o ataque ainda não atingiu ninguem
    {
        hp-=attack_hit.damage; //Tira HP...
        hspeed=attack_hit.knockback*sign(x-attack_hit.x); //Aplica knockback etc...
        with(attack_hit)
        {
            hit=true; //E determina que esse ataque ja acertou alguém, caso algum outro inimigo seja atingido por ele, nada vai acontecer por causa da linha 6.
            instance_destroy(); //E talvez seja uma boa ideia destruir o ataque pra evitar que acerte mais inimigos nos próximos steps
        }
    }
}

GL!
avatar
Data de inscrição : 10/01/2013
Número de Mensagens : 1
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: [DÚVIDA] Colisão de objeto afetar apenas um

em Qui 06 Jul 2017, 00:30
Boa noite. Não entendi o que significa attack_hit.hit na 6 linha. Esse hit.hit não consegui entender
avatar
Ranking : Sem avaliações
Data de inscrição : 29/06/2017
Número de Mensagens : 8
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 7
Ver perfil do usuáriohttps://discord.gg/9VuJYjr

Re: [DÚVIDA] Colisão de objeto afetar apenas um

em Qui 06 Jul 2017, 02:13
Leia o código de novo. O attack_hit é uma variável temporária que contem o ID do objeto do ataque (ID é um numero de identificação próprio de cada objeto, tipo um CPF dele :v).

A variavel "hit" do nosso objeto de ataque, determina se o ataque já atingiu alguém ou não. A linha 6 checa isso e caso seja seja falso, ele vai transformar em verdadeiro, para garantir que outro objeto NÃO leve hit dele também. Entendeu agora?
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