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

Código: Selecionar todos

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 All-x
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:

Código: Selecionar todos

// 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.