colisao nao funciona
Enviado: Sex Abr 26, 2024 3:37 pm
Opa estou com um código que criei para um roguelike shooter, mas a colisão não funciona :[ alguem poderia me ajudar
----------------------------------------------------------------------------------------------------------------------------------------------------
aba create
velc = 4.0
move_dir = 0
velh = 0
velv = 0
aba step
#region var
var _cima = keyboard_check(ord("W")) || keyboard_check(vk_up)
var _baixo = keyboard_check(ord("S")) || keyboard_check(vk_down)
var _esquerda = keyboard_check(ord("D")) || keyboard_check(vk_right)
var _direita = keyboard_check(ord("A")) || keyboard_check(vk_left)
var _teclas = _esquerda - _direita != 0 || _cima - _baixo != 0
#endregion
#region move
move_dir = point_direction(0,0,_esquerda - _direita,_baixo - _cima)
velh = lengthdir_x(velc * _teclas,move_dir)
velv = lengthdir_y(velc * _teclas,move_dir)
x+=velh
y+=velv
#endregion
#region colisao
if place_meeting(x+velh,y,obj_parede){
while !place_meeting(x+sign(velh),y,obj_parede){
x+=sign(velh)
}
velh=0
}
#endregion
#region tiro
#region cursor
cursor_sprite = spr_mira
window_set_cursor(cr_none)
#endregion
#endregion
----------------------------------------------------------------------------------------------------------------------------------------------------
aba create
velc = 4.0
move_dir = 0
velh = 0
velv = 0
aba step
#region var
var _cima = keyboard_check(ord("W")) || keyboard_check(vk_up)
var _baixo = keyboard_check(ord("S")) || keyboard_check(vk_down)
var _esquerda = keyboard_check(ord("D")) || keyboard_check(vk_right)
var _direita = keyboard_check(ord("A")) || keyboard_check(vk_left)
var _teclas = _esquerda - _direita != 0 || _cima - _baixo != 0
#endregion
#region move
move_dir = point_direction(0,0,_esquerda - _direita,_baixo - _cima)
velh = lengthdir_x(velc * _teclas,move_dir)
velv = lengthdir_y(velc * _teclas,move_dir)
x+=velh
y+=velv
#endregion
#region colisao
if place_meeting(x+velh,y,obj_parede){
while !place_meeting(x+sign(velh),y,obj_parede){
x+=sign(velh)
}
velh=0
}
#endregion
#region tiro
#region cursor
cursor_sprite = spr_mira
window_set_cursor(cr_none)
#endregion
#endregion