Tiros saindo de forma diferente para cada lado
Enviado: Qua Fev 10, 2021 3:35 pm
Bem, comecei recentemente a programar e estava vendo uns videos de tutorial so pra fazer um joguinho basico sem muito esforço e tem um erro que eu não consigo encontrar onde ele esta. O jogo é bem simples, é so um quadrado com alguns obstaculos, meu problema é com os tiros que estou tentando criar, se eu atirar pra direita o tiro vai muito baixo e se eu atirar pra esquerda ele vai muito alto, alguem poderia me ajudar a resolver isso?
#region Controles
key_right = keyboard_check(ord("D"))
key_left = keyboard_check(ord("A"))
key_jump = keyboard_check(vk_space)
key_shoot = keyboard_check_pressed(ord("X"));
#endregion
#region Movimentação
var move = key_right - key_left
hspd = move * spd;
vspd = vspd + grv;
if (hspd != 0) image_xscale = sign(hspd);
//colisão horizontal
if place_meeting(x+hspd,y,obj_wall)
{
while (!place_meeting(x+sign(hspd),y,obj_wall))
{
x = x + sign(hspd);
}
hspd = 0;
}
x = x +hspd;
//colisã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;
//pulo
if place_meeting(x,y+1,obj_wall) and key_jump
{
vspd -=14
}
#endregion
#region Tirasso
var flipped = direction;
var gun_x = (x+4)*(flipped)
var _xx = x + lengthdir_x(15, image_angle)
var y_offset = lengthdir_y(-20, image_angle)
if key_shoot and global.bullets > 0
{
with (instance_create_layer(_xx,y+10,"Shoot",obj_shoot))
{
global.bullets--;
speed = 10;
direction = -90 + 90 * other.image_xscale;
image_angle = direction;
}
}
#endregion
#region Controles
key_right = keyboard_check(ord("D"))
key_left = keyboard_check(ord("A"))
key_jump = keyboard_check(vk_space)
key_shoot = keyboard_check_pressed(ord("X"));
#endregion
#region Movimentação
var move = key_right - key_left
hspd = move * spd;
vspd = vspd + grv;
if (hspd != 0) image_xscale = sign(hspd);
//colisão horizontal
if place_meeting(x+hspd,y,obj_wall)
{
while (!place_meeting(x+sign(hspd),y,obj_wall))
{
x = x + sign(hspd);
}
hspd = 0;
}
x = x +hspd;
//colisã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;
//pulo
if place_meeting(x,y+1,obj_wall) and key_jump
{
vspd -=14
}
#endregion
#region Tirasso
var flipped = direction;
var gun_x = (x+4)*(flipped)
var _xx = x + lengthdir_x(15, image_angle)
var y_offset = lengthdir_y(-20, image_angle)
if key_shoot and global.bullets > 0
{
with (instance_create_layer(_xx,y+10,"Shoot",obj_shoot))
{
global.bullets--;
speed = 10;
direction = -90 + 90 * other.image_xscale;
image_angle = direction;
}
}
#endregion