5cdcf705f4
2. 添加shoot射击敌人攻击脚本
46 lines
1.0 KiB
GDScript
46 lines
1.0 KiB
GDScript
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
|
|
|
|
|