charging enemy
This commit is contained in:
parent
5a7c93a573
commit
1d1d201520
5 changed files with 187 additions and 4 deletions
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue