From 0ca564c59ef7a28148f5ee357f7685dba84987bf Mon Sep 17 00:00:00 2001 From: ZYT <2300409876@qq.com> Date: Thu, 5 Mar 2026 14:20:06 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3FrogBoss=E5=8A=A8=E7=94=BB?= =?UTF-8?q?=E5=88=87=E6=8D=A2=E5=8D=A1=E4=BD=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/StreamingAssets/build_info | 2 +- .../Scenes/Nanjing_Pukou_Longhutianjie.unity | 68 ++++++++++++++++++- .../Scripts/Actions/FrogBossActions.cs | 30 ++++++-- .../_FutureMen2/Scripts/Enemy/Enemy/Enemy.cs | 7 ++ .../Scripts/Enemy/FrogBoss/FrogBoss.cs | 15 +++- 5 files changed, 108 insertions(+), 14 deletions(-) diff --git a/Assets/StreamingAssets/build_info b/Assets/StreamingAssets/build_info index d8624da4..59800d54 100644 --- a/Assets/StreamingAssets/build_info +++ b/Assets/StreamingAssets/build_info @@ -1 +1 @@ -Build from ZTT at 2026/3/3 16:25:30 \ No newline at end of file +Build from ZTT at 2026/3/5 14:16:32 \ No newline at end of file diff --git a/Assets/_FutureMen2/Scenes/Nanjing_Pukou_Longhutianjie.unity b/Assets/_FutureMen2/Scenes/Nanjing_Pukou_Longhutianjie.unity index 2f6e0dc7..9e1db7fa 100644 --- a/Assets/_FutureMen2/Scenes/Nanjing_Pukou_Longhutianjie.unity +++ b/Assets/_FutureMen2/Scenes/Nanjing_Pukou_Longhutianjie.unity @@ -728,6 +728,67 @@ MonoBehaviour: soundPlayedCustomEvent: willCleanUpDelegatesAfterStop: 1 frames: 178 +--- !u!1001 &90314885 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1305699910210906374, guid: abb252804fe801f49b0165e1a5eeb65a, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7493155681200699418, guid: abb252804fe801f49b0165e1a5eeb65a, type: 3} + propertyPath: m_Name + value: "\u6D66\u53E3\u9F99\u6E56\u5929\u8857" + objectReference: {fileID: 0} + - target: {fileID: 7833688058533421728, guid: abb252804fe801f49b0165e1a5eeb65a, type: 3} + propertyPath: m_LocalPosition.x + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7833688058533421728, guid: abb252804fe801f49b0165e1a5eeb65a, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7833688058533421728, guid: abb252804fe801f49b0165e1a5eeb65a, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7833688058533421728, guid: abb252804fe801f49b0165e1a5eeb65a, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 7833688058533421728, guid: abb252804fe801f49b0165e1a5eeb65a, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7833688058533421728, guid: abb252804fe801f49b0165e1a5eeb65a, type: 3} + propertyPath: m_LocalRotation.y + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7833688058533421728, guid: abb252804fe801f49b0165e1a5eeb65a, type: 3} + propertyPath: m_LocalRotation.z + value: -0 + objectReference: {fileID: 0} + - target: {fileID: 7833688058533421728, guid: abb252804fe801f49b0165e1a5eeb65a, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7833688058533421728, guid: abb252804fe801f49b0165e1a5eeb65a, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 7833688058533421728, guid: abb252804fe801f49b0165e1a5eeb65a, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: abb252804fe801f49b0165e1a5eeb65a, type: 3} --- !u!1 &98916071 GameObject: m_ObjectHideFlags: 0 @@ -8044,7 +8105,7 @@ MonoBehaviour: m_EditorClassIdentifier: version: 1073741824 data: - dataString: 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 + dataString: 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 file_cachedStartup: {fileID: 0} cacheStartup: 0 showNavGraphs: 1 @@ -16051,8 +16112,8 @@ Transform: m_GameObject: {fileID: 1148355748} serializedVersion: 2 m_LocalRotation: {x: 0, y: 1, z: 0, w: 0} - m_LocalPosition: {x: 0.1106, y: -0, z: 1.097} - m_LocalScale: {x: 0.9941317, y: 1, z: 0.4891} + m_LocalPosition: {x: 0.3763, y: -0, z: 1.103} + m_LocalScale: {x: 1.525495, y: 1, z: 0.4891} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1657300549} @@ -26753,3 +26814,4 @@ SceneRoots: - {fileID: 728118435} - {fileID: 1657300549} - {fileID: 727780346} + - {fileID: 90314885} diff --git a/Assets/_FutureMen2/Scripts/Actions/FrogBossActions.cs b/Assets/_FutureMen2/Scripts/Actions/FrogBossActions.cs index 3866bed9..765d1393 100644 --- a/Assets/_FutureMen2/Scripts/Actions/FrogBossActions.cs +++ b/Assets/_FutureMen2/Scripts/Actions/FrogBossActions.cs @@ -33,6 +33,8 @@ public class FrogBleepAttack : Action boss = GetComponent(); isFinished = false; + // 标记技能正在执行,防止被中断 + boss.isSkillExecuting = true; boss.ResetSkill1(); boss.StartCoroutine(SkillRoutine()); } @@ -64,11 +66,18 @@ public class FrogBleepAttack : Action float dis = Vector3.Distance(boss.mouthPoint.position, lockPos); yield return new WaitForSeconds(dis / tongueSpeed); + + // 5️⃣ 吐舌结束立即返回待机(解决延迟问题) boss.Idle(); - // 5️⃣ 攻击结束 → 后撤(🔥关键) - yield return RetreatFromPlayer(); + + // 6️⃣ 后撤(并行执行,不阻塞动画切换) + boss.StartCoroutine(RetreatFromPlayer()); + + // 等待后撤完成 + yield return new WaitForSeconds(0.1f); boss.Idle(); + boss.isSkillExecuting = false; // 标记技能执行结束 isFinished = true; } @@ -109,15 +118,18 @@ public class FrogBleepAttack : Action Quaternion targetRot = Quaternion.LookRotation(dir); - while (Quaternion.Angle(transform.rotation, targetRot) > 1f) + // 快速转向,减少等待时间 + while (Quaternion.Angle(transform.rotation, targetRot) > 15f) { transform.rotation = Quaternion.RotateTowards( transform.rotation, targetRot, - rotateSpeed * Time.deltaTime + 720f * Time.deltaTime ); yield return null; } + // 立即对齐到目标方向 + transform.rotation = targetRot; } } @@ -128,13 +140,15 @@ public class FrogPoisonAttack : Action { private FrogBoss boss; private bool isFinished; - private float rotateSpeed = 360f; // 每秒旋转角度 + private float rotateSpeed = 360f; public override void OnStart() { boss = GetComponent(); isFinished = false; + // 标记技能正在执行,防止被中断 + boss.isSkillExecuting = true; boss.ResetSkill2(); boss.StartCoroutine(Attack()); } @@ -174,6 +188,7 @@ public class FrogPoisonAttack : Action } boss.Idle(); + boss.isSkillExecuting = false; // 标记技能执行结束 isFinished = true; } @@ -371,10 +386,11 @@ public class FrogIdleMove : Action return; Quaternion targetRot = Quaternion.LookRotation(dir); - transform.rotation = Quaternion.RotateTowards( + // 使用Slerp实现更平滑的转向 + transform.rotation = Quaternion.Slerp( transform.rotation, targetRot, - rotateSpeed * Time.deltaTime + 5f * Time.deltaTime ); } diff --git a/Assets/_FutureMen2/Scripts/Enemy/Enemy/Enemy.cs b/Assets/_FutureMen2/Scripts/Enemy/Enemy/Enemy.cs index a33d9056..e986477e 100644 --- a/Assets/_FutureMen2/Scripts/Enemy/Enemy/Enemy.cs +++ b/Assets/_FutureMen2/Scripts/Enemy/Enemy/Enemy.cs @@ -87,6 +87,13 @@ public class Enemy : MonoBehaviour [HideInInspector] public float skill2Timer; [HideInInspector] public float teleportTimer; + [HideInInspector] public bool isSkillExecuting; + + public virtual bool HasAnySkillReady() + { + return false; + } + [Header("Spike")] public int spikeTriggerIndex = 4; // 100%→80→60→40→20 diff --git a/Assets/_FutureMen2/Scripts/Enemy/FrogBoss/FrogBoss.cs b/Assets/_FutureMen2/Scripts/Enemy/FrogBoss/FrogBoss.cs index 9b5ff08a..95d05f34 100644 --- a/Assets/_FutureMen2/Scripts/Enemy/FrogBoss/FrogBoss.cs +++ b/Assets/_FutureMen2/Scripts/Enemy/FrogBoss/FrogBoss.cs @@ -52,6 +52,10 @@ public class FrogBoss : Enemy public override void Update() { base.Update(); + // 如果正在执行技能,不进行自动转向,让技能逻辑自己处理 + if (isSkillExecuting) + return; + if (enemyState != EnemyState.Show && enemyState != EnemyState.Dead) { skill1Timer += Time.deltaTime; @@ -68,10 +72,11 @@ public class FrogBoss : Enemy Quaternion targetRot = Quaternion.LookRotation(dir); - transform.transform.rotation = Quaternion.RotateTowards( + // 使用Slerp实现更平滑的转向,系数约0.1-0.15 + transform.transform.rotation = Quaternion.Slerp( transform.transform.rotation, targetRot, - rotateSpeed * Time.deltaTime + 5f * Time.deltaTime ); } } @@ -103,8 +108,12 @@ public class FrogBoss : Enemy #region Skill Reset - public bool HasAnySkillReady() + public override bool HasAnySkillReady() { + // 如果正在执行技能,不认为技能就绪 + if (isSkillExecuting) + return false; + return skill1Timer >= skill1Cooldown || skill2Timer >= skill2Cooldown || IsUserSkill3();