gae_wild_jam/scripts/blue_slime.gd

42 lines
977 B
GDScript

extends EnemyBase
var hits_remaining = 2
var is_hurt = false
func _ready() -> void:
super()
speed = 0.1
animated_sprite_2d.sprite_frames = animated_sprite_2d.sprite_frames.duplicate()
$Area2D.body_entered.connect(_on_area_2d_body_entered)
func _process(delta: float) -> void:
if is_dying or is_hurt:
return
_chase_witch()
func die() -> void:
hits_remaining -= 1
if hits_remaining <= 0:
super()
else:
_play_hurt()
func _play_hurt() -> void:
is_hurt = true
var hurt_anim: String
if abs(last_direction.x) >= abs(last_direction.y):
hurt_anim = "hurt_left" if last_direction.x < 0 else "hurt_right"
else:
hurt_anim = "hurt_up" if last_direction.y < 0 else "hurt_down"
animated_sprite_2d.sprite_frames.set_animation_loop(hurt_anim, false)
animated_sprite_2d.play(hurt_anim)
await animated_sprite_2d.animation_finished
is_hurt = false
func _on_area_2d_body_entered(body: Node2D) -> void:
if is_dying or is_hurt:
return
if body == player:
die()