#region MOVIMENTAÇÃO
// Se não está atacando, permite mover
if (!atacando) {
var move = key_right - key_left;
// Velocidade horizontal
hspd = move * spd;
// Gravidade
vspd += grv;
// Virar sprite de acordo com direção
if (hspd != 0) image_xscale = sign(hspd);
// Colisão horizontal
if (place_meeting(x + hspd, y, obj_chao)) {
while (!place_meeting(x + sign(hspd), y, obj_chao)) {
x += sign(hspd);
}
hspd = 0;
}
x += hspd;
// Colisão vertical
if (place_meeting(x, y + vspd, obj_chao)) {
while (!place_meeting(x, y + sign(vspd), obj_chao)) {
y += sign(vspd);
}
vspd = 0;
}
y += vspd;
// Definir sprite de movimento/parado
if (hspd != 0) {
sprite_index = spr_playe1_andando; // sprite de andar
image_speed = 1;
} else {
sprite_index = spr_playe1_parado; // sprite parado
image_speed = 1;
}
}
#endregion
// Colisão vertical
if (place_meeting(x, y + vspd, obj_chao)) {
while (!place_meeting(x, y + sign(vspd), obj_chao)) {
y += sign(vspd);
}
vspd = 0;
}
y += vspd;
// Pulo
if (place_meeting(x, y+1, obj_chao) && key_jump) {
vspd = -7;
}
// Variável para contar pulos (adicione no Create Event do player)
if (!variable_instance_exists(id, "jump_count")) jump_count = 0;
// Se está no chão, zera os pulos
if (place_meeting(x, y+1, obj_chao)) {
jump_count = 0;
}
// Pulo simples ou duplo
if (keyboard_check_pressed(vk_space)) { // ou sua tecla de pulo
if (jump_count < 2) { // Permite até 2 pulos
vspd = -9; // Força do pulo
jump_count++;
}
}
#endregion
#region VIDA
if ([Link] < 1) {
game_restart();
}
#endregion
#region sprits
if (!place_meeting(x, y+1, obj_chao)) {
// No ar
if (vspd > 0.5) sprite_index = spr_playe1_caindo;
else sprite_index = spr_playe1_pulando;
} else {
// No chão
if (hspd != 0) sprite_index = spr_playe1_andando;
else sprite_index = spr_playe1_parado;
}
// Se apertar E e não estiver atacando
if (keyboard_check_pressed(ord("E")) && !atacando) {
atacando = true;
sprite_index = spr_playe1_ataque;
image_index = 0;
image_speed = 1;
}
// Se está atacando e a animação terminou
if (atacando && image_index >= image_number - 1) {
atacando = false;
sprite_index = spr_playe1_parado;
image_speed = 0;
}