Dúvida em um comando de colisão
Enviado: Seg Mar 27, 2023 6:39 pm
Sou novo no Game Maker e tenho pesquisado no youtube e em fóruns para aprender o básico da engine. Estou aprendendo a fazer um jogo de plataforma e na hora de fazer o processo de colisão eu não entendi para que servia uma parte específica do código. O comando Funciona bem, mas não entendo a finalidade desse trecho de código específico:
{
while(!place_meeting(x+sign(hspd),y,obj_Wall))
{
x = x + sign(hspd);
O código inteiro é esse daqui:
#region CONTROLES
key_right = keyboard_check(ord("D")) //DIREITA
key_left = keyboard_check(ord("A")) //ESQUERDA
key_jump = keyboard_check(vk_space) //PULO
#endregion
#region MOVIMENTAÇÃO
var move = key_right - key_left
hspd = move * spd;
vspd = vspd + grv;
if(hspd != 0) image_xscale = sign(hspd);
//COLSIÃO HORIZONTAL
if place_meeting(x+hspd,y,obj_Wall)
{
while(!place_meeting(x+sign(hspd),y,obj_Wall))
{
x = x + sign(hspd);
show_debug_message("certo")
}
hspd = 0;
}
x = x + hspd;
//COLSIÃO VERTICAL
if place_meeting(x,y+vspd,obj_Wall)
{
while(!place_meeting(x,y+sign(vspd),obj_Wall))
{
y = y + sign(vspd);
}
vspd = 0;
}
y = y + vspd;
//JUMP
if place_meeting(x,y+1,obj_Wall) and key_jump
{
vspd -= 8;
}
#endregion
{
while(!place_meeting(x+sign(hspd),y,obj_Wall))
{
x = x + sign(hspd);
O código inteiro é esse daqui:
#region CONTROLES
key_right = keyboard_check(ord("D")) //DIREITA
key_left = keyboard_check(ord("A")) //ESQUERDA
key_jump = keyboard_check(vk_space) //PULO
#endregion
#region MOVIMENTAÇÃO
var move = key_right - key_left
hspd = move * spd;
vspd = vspd + grv;
if(hspd != 0) image_xscale = sign(hspd);
//COLSIÃO HORIZONTAL
if place_meeting(x+hspd,y,obj_Wall)
{
while(!place_meeting(x+sign(hspd),y,obj_Wall))
{
x = x + sign(hspd);
show_debug_message("certo")
}
hspd = 0;
}
x = x + hspd;
//COLSIÃO VERTICAL
if place_meeting(x,y+vspd,obj_Wall)
{
while(!place_meeting(x,y+sign(vspd),obj_Wall))
{
y = y + sign(vspd);
}
vspd = 0;
}
y = y + vspd;
//JUMP
if place_meeting(x,y+1,obj_Wall) and key_jump
{
vspd -= 8;
}
#endregion