feat: 1. 添加charge冲锋敌人动画和攻击脚本
2. 添加shoot射击敌人攻击脚本
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
extends Node2D
|
||||
class_name ChargeBehabior
|
||||
|
||||
@export var enemy: Enemy
|
||||
@export var anim_effects: AnimationPlayer
|
||||
@export var prep_time := 1.0
|
||||
@export var cooldown := 3.0
|
||||
|
||||
|
||||
var current_cooldown := 0.0
|
||||
var charge_attack_position := Vector2.ZERO
|
||||
var is_charging := false
|
||||
func _ready() -> void:
|
||||
current_cooldown = cooldown
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
if enemy == null:
|
||||
return
|
||||
|
||||
if is_charging:
|
||||
enemy.global_position = enemy.global_position.move_toward(charge_attack_position, (enemy.stats.speed * 5) * delta)
|
||||
|
||||
if enemy.global_position.distance_to(charge_attack_position) < 50:
|
||||
end_charge()
|
||||
else:
|
||||
if current_cooldown > 0:
|
||||
current_cooldown -= delta
|
||||
else:
|
||||
if is_instance_valid(Global.player):
|
||||
charge_attack_position = Global.player.global_position
|
||||
start_charge()
|
||||
|
||||
|
||||
func start_charge() -> void:
|
||||
enemy.can_move = false
|
||||
anim_effects.play("charge")
|
||||
await anim_effects.animation_finished
|
||||
is_charging = true
|
||||
|
||||
func end_charge() -> void:
|
||||
is_charging = false
|
||||
current_cooldown = cooldown
|
||||
enemy.can_move = true
|
||||
|
||||
|
||||
Reference in New Issue
Block a user