J
JohnSebek
Guest
Hello, so I made an enemy from a tutorial by Shaun Spalding. And added a little animation code. But I have several problems and I tried to fix them for two hours but still no luck.1. The enemy does not change sprite when walking left.2.When the enemy is attacking player he showed the right animation, but when the player tries to run, the enemy will change to standing sprite and stays until the attack.
Here is my code:
Create Event:
execute code:
vsp = 0;
grv = 0.3;
walksp = 2;
hsp = walksp;
hp = 20;
maxhp = hp;
Alarm Event for alarm 1:
execute code:
///alarm
Step Event:
execute code:
vsp = vsp + grv;
//horizontal colision
if (place_meeting(x+hsp,y,obj_floor))
{
while (!place_meeting(x+sign(hsp),y,obj_floor))
{
x = x + sign(hsp);
}
hsp = -hsp;
}
x = x + hsp;
//vertical colision
if (place_meeting(x,y+vsp,obj_floor))
{
while (!place_meeting(x,y+sign(vsp),obj_floor))
{
y = y + sign(vsp);
}
vsp = 0;
}
y = y + vsp;
//animation
if (!place_meeting(x,y+1,obj_floor))
{
sprite_index = spr_enemy_walk3;
image_speed = 0;
if (sign(vsp) > 0) image_index = 1; else image_index = 0;
}
else
{
image_speed = 0.16;
if (hsp ==0)
{
sprite_index = spr_enemy_stand3;
}
else
{
sprite_index = spr_enemy_walk3;
}
}
Collision Event with object obj_player:
execute code:
{
sprite_index = spr_enemy_hit3;
if(alarm[1] == -1){
hsp = 0;
health -=4;
alarm[1] = room_speed/2;
}
}
else
execute code:
if (distance_to_point(obj_player.x, obj_player.y) <= 2)
{
move_towards_point(obj_player.x,obj_player.y, 2)
}
else
{
hsp = 0
}
Draw Event:
Draw the instance
Here is my code:
Create Event:
execute code:
vsp = 0;
grv = 0.3;
walksp = 2;
hsp = walksp;
hp = 20;
maxhp = hp;
Alarm Event for alarm 1:
execute code:
///alarm
Step Event:
execute code:
vsp = vsp + grv;
//horizontal colision
if (place_meeting(x+hsp,y,obj_floor))
{
while (!place_meeting(x+sign(hsp),y,obj_floor))
{
x = x + sign(hsp);
}
hsp = -hsp;
}
x = x + hsp;
//vertical colision
if (place_meeting(x,y+vsp,obj_floor))
{
while (!place_meeting(x,y+sign(vsp),obj_floor))
{
y = y + sign(vsp);
}
vsp = 0;
}
y = y + vsp;
//animation
if (!place_meeting(x,y+1,obj_floor))
{
sprite_index = spr_enemy_walk3;
image_speed = 0;
if (sign(vsp) > 0) image_index = 1; else image_index = 0;
}
else
{
image_speed = 0.16;
if (hsp ==0)
{
sprite_index = spr_enemy_stand3;
}
else
{
sprite_index = spr_enemy_walk3;
}
}
Collision Event with object obj_player:
execute code:
{
sprite_index = spr_enemy_hit3;
if(alarm[1] == -1){
hsp = 0;
health -=4;
alarm[1] = room_speed/2;
}
}
else
execute code:
if (distance_to_point(obj_player.x, obj_player.y) <= 2)
{
move_towards_point(obj_player.x,obj_player.y, 2)
}
else
{
hsp = 0
}
Draw Event:
Draw the instance