Página 1 de 1

Colisão em 8 direções

Enviado: Sex Mai 17, 2019 6:24 pm
por KevemPereira
olha eu estou com muito problema, estou fazendo um projeto aqui um com a movimentação em 8 direções fiz esse codigo

var up, down, left, right;

up = keyboard_check(ord("W"));
down = keyboard_check(ord("S"));
left = keyboard_check(ord("A"));
right = keyboard_check(ord("D"));


if (up || down || left || right)  
{
    dir = point_direction(0, 0, (right - left), (down - up));
    velh = lengthdir_x(vel, dir);
    velv = lengthdir_y(vel, dir);
}
else
{
 velh = 0;
 velv = 0;
}


x += velh;
y += velv;



bom esse codigo está funcionando bem mas não consigo fazer a colisão de geito nenhum, então queria saber se vocês poderiam me ajudar

Re: Colisão em 8 direções

Enviado: Sex Mai 17, 2019 6:42 pm
por Alex FC
Pelo que vi, tu está acompanho os vídeos do @None:

https://www.youtube.com/watch?v=dIQ_SIXzpzk

No código só tem o movimento. O @None provavelmente irá liberar em breve as próximas aulas. Ele tem um grupo no Discord: https://discord.gg/p9WN6Rx

Provavelmente ele irá utilizar o mesmo código dos vídeos de movimento em plataforma.

Você pode apagar substituir as duas últimas linhas do código que postou e adicionar isso no End Step:

// Colisão hoirizontal
repeat(abs(velh))
{
   if (!place_meeting(x + sign(velh), y, obj_block))
   {
      x += sign(velh);
   }
   else
   {
      velh = 0;
      break;      
   }
}

// Colisão vertical
repeat(abs(velv))
{
   if (!place_meeting(x, y + sign(velv), obj_block))
   {
      y += sign(velv);
   }
   else
   {
      velv = 0;
      break;      
   }
}


Espero que ajude.