feat: 1. 添加武器击退功能,player 使用weapon_behavior/melee_behavior(hitbox 会调用 setup 初始化) 的 hitbox 击中 enemy_slow,enemy_slow拿到hitbox的knockback_power,以及hitbox指向enemy的方向,然后朝着该方向,使用power击退:调用enemy.gd 的 apply_knockback,然后_process中会对position修改,同时开启定时器,定时器结束的时候,使用 reset_knockback 重置

This commit is contained in:
luke358
2026-05-19 17:39:58 +08:00
parent cf8c5b90ff
commit 4fa565e0e9
10 changed files with 110 additions and 7 deletions
+26
View File
@@ -0,0 +1,26 @@
extends WeaponBehavior
class_name MeleeBehavior
@export var hitbox: HitboxComponent
func execute_attack() -> void:
weapon.is_attacking = true
var tween := create_tween()
var recoil_pos := Vector2(weapon.atk_start_pos.x - weapon.data.stats.recoil, weapon.atk_start_pos.y)
tween.tween_property(weapon.sprite_2d, "position", recoil_pos, weapon.data.stats.recoil_duration)
hitbox.enable()
hitbox.setup(get_damage(), critical, weapon.data.stats.knockback, weapon.get_parent())
var attack_pos := Vector2(weapon.atk_start_pos.x + weapon.data.stats.max_range, weapon.atk_start_pos.y)
tween.tween_property(weapon.sprite_2d, "position", attack_pos, weapon.data.stats.attack_duration)
tween.tween_property(weapon.sprite_2d, "position", weapon.atk_start_pos, weapon.data.stats.back_duration)
tween.finished.connect(func():
hitbox.disable()
weapon.is_attacking = false
critical = false
)