Refactor enemy movement logic for simplicity; adjust character sprite drawing position

This commit is contained in:
2026-03-26 12:49:28 +00:00
parent 83d250f1e9
commit 3813fcb268
2 changed files with 3 additions and 28 deletions
+1 -1
View File
@@ -129,7 +129,7 @@ class Character
elapsed = Gosu.milliseconds / 1000.0
frame_index = ((elapsed * 7).floor) % 6
@animations[@current_animation][frame_index].draw(sprite_x, sprite_y, sprite_y, 1.8, 1.8)
@animations[@current_animation][frame_index].draw(sprite_x, sprite_y, sprite_y + 30, 1.8, 1.8)
return unless DEBUG
+2 -27
View File
@@ -131,33 +131,8 @@ class EnemyAI
dx = Gosu.offset_x(angle, SPEED)
dy = Gosu.offset_y(angle, SPEED)
steps = SPEED.ceil
step_dx = dx / steps.to_f
step_dy = dy / steps.to_f
steps.times do
moved_x = false
moved_y = false
# Try X
@enemy.x += step_dx
if ($bus.get(:collides?, @enemy.rect) & [:wall, :object])&.any?
@enemy.x -= step_dx
else
moved_x = true
end
# Try Y (independent — keeps full intent)
@enemy.y += step_dy
if ($bus.get(:collides?, @enemy.rect) & [:wall, :object])&.any?
@enemy.y -= step_dy
else
moved_y = true
end
# If both failed, stop early
break unless moved_x || moved_y
end
@enemy.x += dx
@enemy.y += dy
if $bus.get(:collides?, @enemy.rect)&.include?(:character)
# Attack player