charging enemy

This commit is contained in:
Michael Campbell 2026-03-19 01:21:25 -04:00
parent 5a7c93a573
commit 1d1d201520
5 changed files with 187 additions and 4 deletions

View file

@ -13,6 +13,12 @@ var frame_count := 0
var knockback := Vector3.ZERO
var default_movement := true
var stunned := false
func set_rotation_to_velocity() -> void:
rotation.y = Vector2(velocity.x, -velocity.z).angle()
func exp_lerp(a: Variant, b: Variant, decay: float, dt: float) -> Variant:
return lerp(a, b, 1 - exp(-decay * dt))
@ -32,20 +38,23 @@ func _process_movement(delta: float) -> void:
velocity = velocity.limit_length(max_speed)
func _process(delta: float) -> void:
if not default_movement: return
if stunned: return
frame_count = (frame_count + 1) % FRAME_IDXS
if frame_count == frame_idx:
_update_nav_agent()
if knockback.length() < 0.1:
_process_movement(delta)
rotation.y = Vector2(velocity.x, -velocity.z).angle()
set_rotation_to_velocity()
position.y = 0.01
else:
velocity = knockback
knockback = exp_lerp(knockback, Vector3.ZERO, 15., delta)
move_and_slide()
func hit(proj: Node3D, damage: float) -> bool:
health -= damage
@ -61,4 +70,3 @@ func hit(proj: Node3D, damage: float) -> bool:
func _on_hurtbox_body_entered(body: Node3D) -> void:
if body is Player:
body.damage(self)