From 45eb1dcb000760c1740604b5f074dd4d0c942f88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=A8=E8=90=BD=E5=9F=BA=E5=9B=B4=E8=99=BE?= <3161880837@qq.com> Date: Mon, 8 Sep 2025 22:19:25 +0800 Subject: [PATCH] =?UTF-8?q?feat(EntityBase):=20=E6=B7=BB=E5=8A=A0=E5=86=B2?= =?UTF-8?q?=E5=88=BA=E4=BD=8D=E7=A7=BB=E8=AE=A1=E7=AE=97=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加 getSprintInitialDisplace 和 getSprintProgress 方法用于计算冲刺初始位移和进度 简化完美闪避判定逻辑,使用 getSprintProgress 方法替代原有计算 --- scripts/Statemachine/EntityBase.gd | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scripts/Statemachine/EntityBase.gd b/scripts/Statemachine/EntityBase.gd index 61af2f4..7dac41c 100644 --- a/scripts/Statemachine/EntityBase.gd +++ b/scripts/Statemachine/EntityBase.gd @@ -160,6 +160,10 @@ func _physics_process(_delta: float) -> void: trailParticle.emitting = trailing # 通用方法 +func getSprintInitialDisplace(): + return displace(velocity) * sprintMultiplier +func getSprintProgress(): + return velocity.length() / getSprintInitialDisplace().length() func applyLevel(): fields[FieldStore.Entity.MAX_HEALTH] *= (1 + GameRule.entityHealthIncreasePerWave * (GameRule.difficulty + 1)) ** level fields[FieldStore.Entity.DAMAGE_MULTIPILER] *= (1 + GameRule.entityDamageIncreasePerWave * (GameRule.difficulty + 1)) ** level @@ -177,7 +181,7 @@ func takeDamage(bullet: BulletBase, crit: bool): var perfectMiss = false if sprinting: playSound("miss") - if velocity.length() > (displace(velocity) * sprintMultiplier * (1 - fields.get(FieldStore.Entity.PERFECT_MISS_WINDOW))).length(): + if getSprintProgress() > 1 - fields.get(FieldStore.Entity.PERFECT_MISS_WINDOW): perfectMiss = true if perfectMiss: storeEnergy(damage * 2)