T2008
Member
My 8 directional enemy's sprite is sometimes off while in wandering state (ie it will walk backwards sometimes while facing forward, etc). I'm sure it's something stupid but I can't figure it out. I have scripts that control the sprite (for idle, walk, attack, etc). The relevant code is below (for walk; the others are the same). I define walk in the create event of the enemy. Any ideas as to why the correct sprite doesn't always show?
Here's a portion of the wander script (it will run the script direction sprite run if moving etc; I didn't include all for brevity):
Code:
function direction_sprite_walk() {
switch ((((direction + 22.5) mod 360) + 360) mod 360) div 45 {
case 0: sprite_index = walk_e; break;
case 1: sprite_index = walk_ne; break;
case 2: sprite_index = walk_n; break;
case 3: sprite_index = walk_nw; break;
case 4: sprite_index = walk_w; break;
case 5: sprite_index = walk_sw; break;
case 6: sprite_index = walk_s; break;
case 7: sprite_index = walk_se; break;
}
}
Code:
//---Stand Sprite If Enemy Is Alive, Not Moving and Not Hit
if (hp > 0) && (spd = 0) && (!hit) {
//Enemy Is Not Touching Object
if (!place_meeting(x,y,obj_all_solid_parent)) &&
(!place_meeting(x,y,obj_room_constrainer_parent)) &&
(!place_meeting(x,y,obj_all_animal_parent)) &&
(!place_meeting(x,y,obj_npc_parent)) &&
(!place_meeting(x,y,obj_enemy_ground_parent_not_sp)) &&
(!place_meeting(x,y,obj_player)) {
//Direction
direction = choose(0,45,90,135,180,225,270,315);
//Sprite Index
direction_sprite_stand();
}
}
//---Set Alarm To Change Wander Direction
alarm[0] = choose(60,90,120,180);