diff --git a/Assets/Art/FengLei/Fish/1.prefab b/Assets/Art/FengLei/Fish/1.prefab index ee0be5f7d..75f485ca3 100644 --- a/Assets/Art/FengLei/Fish/1.prefab +++ b/Assets/Art/FengLei/Fish/1.prefab @@ -802,7 +802,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!4 &4659075296069922 Transform: m_ObjectHideFlags: 0 @@ -866,6 +866,8 @@ MonoBehaviour: isyz: 0 yzID: colliderList: [] + lockPoint: {fileID: 4349160784336160} + rotationPY: 60 isRotate: 1 ischild0: 1 depthOffset: 560 diff --git a/Assets/Art/FengLei/Fish/71.prefab b/Assets/Art/FengLei/Fish/71.prefab index b57ed5fab..1647273ea 100644 --- a/Assets/Art/FengLei/Fish/71.prefab +++ b/Assets/Art/FengLei/Fish/71.prefab @@ -5352,7 +5352,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!4 &4348932386223146 Transform: m_ObjectHideFlags: 0 @@ -5415,6 +5415,8 @@ MonoBehaviour: isyz: 0 yzID: colliderList: [] + lockPoint: {fileID: 0} + rotationPY: 60 isRotate: 1 ischild0: 1 depthOffset: 390 @@ -5450,9 +5452,9 @@ CircleCollider2D: m_IsTrigger: 0 m_UsedByEffector: 0 m_UsedByComposite: 0 - m_Offset: {x: 0, y: 0} + m_Offset: {x: 0, y: 1.509161} serializedVersion: 2 - m_Radius: 0.5 + m_Radius: 1.63849 --- !u!1 &1491235563968188 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Art/FengLei/PaoTai/ZiDan/shot/shot_1453.prefab b/Assets/Art/FengLei/PaoTai/ZiDan/shot/shot_1453.prefab index 68abbcd66..8c2c27dd7 100644 --- a/Assets/Art/FengLei/PaoTai/ZiDan/shot/shot_1453.prefab +++ b/Assets/Art/FengLei/PaoTai/ZiDan/shot/shot_1453.prefab @@ -25,8 +25,8 @@ Transform: m_GameObject: {fileID: 1062672591814017} serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0.18} - m_LocalScale: {x: 0.049999997, y: 0.049999997, z: 0.049999997} + m_LocalPosition: {x: -0.09, y: -3.3, z: 0.18} + m_LocalScale: {x: 0.10000001, y: 0.10000001, z: 0.10000001} m_ConstrainProportionsScale: 1 m_Children: - {fileID: 4562805979122256} diff --git a/Assets/MyGame/Scripts/Manager/CreateFishManager.cs b/Assets/MyGame/Scripts/Manager/CreateFishManager.cs index f9b259e42..d72055a44 100644 --- a/Assets/MyGame/Scripts/Manager/CreateFishManager.cs +++ b/Assets/MyGame/Scripts/Manager/CreateFishManager.cs @@ -615,7 +615,7 @@ public class CreateFishManager : MonoSingleton return; foreach (var item in bossList) { - if (item.fishNumber == "13030") + if (item.fishNumber == "11025") { item.isCreate = 2; } @@ -1507,21 +1507,30 @@ public class CreateFishManager : MonoSingleton if (!fishDatas_hashCodekey.TryGetValue(killFish.fishId, out var monster)) return; - monster.DieFish(killFish); // 死亡粒子特效 Instantiate( monster.effect_Die != null ? monster.effect_Die : dieFXPrefab, monster.transform.position, Quaternion.identity, transform.parent); - // 加分回调(在金币/加分面板飞完后执行) - Action onScoreAdd = audioID => + int goldToAdd = killFish.gold; // 立即复制需要的数据 + string fishId = killFish.fishId; // 如果需要的话 + Action onScoreAdd = (audioID) => { - var sitList = GetCurrentPanelSitList(); - sitData.goldNum += killFish.gold; + sitData.goldNum += goldToAdd; // 使用副本,不再依赖 killFish 对象 sitData.tMP_GoldNum.text = sitData.goldNum.ToString(); AudioManager.Instance.PlayerFX(audioID); }; + //// 加分回调(在金币/加分面板飞完后执行) + //Action onScoreAdd = (audioID) => + //{ + // var sitList = GetCurrentPanelSitList(); + // sitData.goldNum += killFish.gold; + // sitData.tMP_GoldNum.text = sitData.goldNum.ToString(); + // AudioManager.Instance.PlayerFX(audioID); + //}; + monster.DieFish(killFish); + switch (monster.fishenum) { case FishTypeEnum.普通鱼: diff --git a/Assets/MyGame/Scripts/Turret/TurretData.cs b/Assets/MyGame/Scripts/Turret/TurretData.cs index 1c6fa7e81..aec65c3ad 100644 --- a/Assets/MyGame/Scripts/Turret/TurretData.cs +++ b/Assets/MyGame/Scripts/Turret/TurretData.cs @@ -117,33 +117,59 @@ public class TurretData : MonoBehaviour { PlayState(TurretState.Idle); } + //public Vector2 GetBulletStartWorldPos() + //{ + // if (tra_BulletStartPosition == null) + // return Vector2.zero; + + // // 如果是 UI RectTransform(UGUI) + // RectTransform rect = tra_BulletStartPosition.GetComponent(); + // if (rect != null) + // { + // // 1. UI 本地坐标 → Canvas 坐标 + // Vector2 canvasPos = CoordinateTransformation.AnchoredPos_ToCanvas( + // rect, + // UIManager.Instance.uiRoot.GetComponent() + // ); + + // // 2. Canvas 坐标 → 世界坐标 + // return CoordinateTransformation.CanvasToWorld( + // canvasPos, + // UIManager.Instance.uiRoot.GetComponent(), + // Camera.main + // ); + // } + + // // 如果不是 UI(比如 3D Transform) + // return tra_BulletStartPosition.position; + //} public Vector2 GetBulletStartWorldPos() { if (tra_BulletStartPosition == null) return Vector2.zero; - // 如果是 UI RectTransform(UGUI) + // 如果是 UI(UGUI) RectTransform rect = tra_BulletStartPosition.GetComponent(); if (rect != null) { - // 1. UI 本地坐标 → Canvas 坐标 - Vector2 canvasPos = CoordinateTransformation.AnchoredPos_ToCanvas( - rect, - UIManager.Instance.uiRoot.GetComponent() - ); + Canvas canvas = UIManager.Instance.uiRoot.GetComponent(); + Camera cam = Camera.main; - // 2. Canvas 坐标 → 世界坐标 - return CoordinateTransformation.CanvasToWorld( - canvasPos, - UIManager.Instance.uiRoot.GetComponent(), - Camera.main + // 方式1:通过屏幕坐标直接转世界坐标(推荐) + Vector3 screenPos = RectTransformUtility.WorldToScreenPoint( + canvas.renderMode == RenderMode.ScreenSpaceOverlay ? null : canvas.worldCamera, + rect.position ); + // 需要计算 Z 轴距离(物体到相机的距离),这里假设子弹打在 Z=0 平面 + float distance = Mathf.Abs(cam.transform.position.z - 0f); + Vector3 worldPos = cam.ScreenToWorldPoint(new Vector3(screenPos.x, screenPos.y, distance)); + worldPos.z = 0f; + return worldPos; } - // 如果不是 UI(比如 3D Transform) + // 非 UI(3D 物体) return tra_BulletStartPosition.position; } - public void SetFrenzy(bool value) { isFrenzy = value; @@ -209,6 +235,62 @@ public class TurretData : MonoBehaviour } } + //private void PlaySkeleton(TurretState state) + //{ + // if (skeletonAnimation == null) return; + + // string anim = state switch + // { + // TurretState.Idle => idleAnim, + // TurretState.Attack => (isFrenzy && useFrenzyAnim) ? frenzyAttackAnim : attackAnim, + // TurretState.LaserStart => laserStartAnim, + // TurretState.LaserLoop => laserLoopAnim, + // TurretState.LaserEnd => laserEndAnim, + // _ => idleAnim + // }; + + // bool loop = state == TurretState.Attack || state == TurretState.LaserLoop; + // skeletonAnimation.AnimationState.SetAnimation(0, anim, loop); + + // if (state == TurretState.LaserStart) + // { + // skeletonAnimation.AnimationState.AddAnimation(0, laserLoopAnim, true, 0f); + // } + //} + + + + //private void PlayLegacy(TurretState state) + //{ + // if (old_CurrAnimation == null) return; + + // string anim = state switch + // { + // TurretState.Idle => idleAnim, + // TurretState.Attack => (isFrenzy && useFrenzyAnim) ? frenzyAttackAnim : attackAnim, + // TurretState.LaserStart => laserStartAnim, + // TurretState.LaserLoop => laserLoopAnim, + // TurretState.LaserEnd => laserEndAnim, + // _ => idleAnim + // }; + + // old_CurrAnimation.Play(anim); + //} + + + //private void PlayAnimator(TurretState state) + //{ + // if (new_CurrAnimation == null) return; + + // if (state == TurretState.Attack && isFrenzy && useFrenzyAnim) + // { + // new_CurrAnimation.SetTrigger("FrenzyAttack"); + // } + // else + // { + // new_CurrAnimation.SetInteger("State", (int)state); + // } + //} private void PlaySkeleton(TurretState state) { if (skeletonAnimation == null) return; @@ -223,17 +305,23 @@ public class TurretData : MonoBehaviour _ => idleAnim }; + // 如果动画名为空 → 停止当前动画(暂停),不再播放任何动画 + if (string.IsNullOrEmpty(anim)) + { + skeletonAnimation.AnimationState.ClearTrack(0); + skeletonAnimation.AnimationState.SetEmptyAnimation(0, 0f); + return; + } + bool loop = state == TurretState.Attack || state == TurretState.LaserLoop; skeletonAnimation.AnimationState.SetAnimation(0, anim, loop); - if (state == TurretState.LaserStart) + if (state == TurretState.LaserStart && !string.IsNullOrEmpty(laserLoopAnim)) { skeletonAnimation.AnimationState.AddAnimation(0, laserLoopAnim, true, 0f); } } - - private void PlayLegacy(TurretState state) { if (old_CurrAnimation == null) return; @@ -248,22 +336,33 @@ public class TurretData : MonoBehaviour _ => idleAnim }; + if (string.IsNullOrEmpty(anim)) + { + old_CurrAnimation.Stop(); + return; + } + old_CurrAnimation.Play(anim); } - private void PlayAnimator(TurretState state) { if (new_CurrAnimation == null) return; - if (state == TurretState.Attack && isFrenzy && useFrenzyAnim) + // 如果缺少对应动画,暂停 animator(速度为0)或者设置一个空状态 + if (state == TurretState.Attack && isFrenzy && useFrenzyAnim && !string.IsNullOrEmpty(frenzyAttackAnim)) { new_CurrAnimation.SetTrigger("FrenzyAttack"); } - else + else if (!string.IsNullOrEmpty(attackAnim) || state == TurretState.Idle && !string.IsNullOrEmpty(idleAnim)) { new_CurrAnimation.SetInteger("State", (int)state); } + else + { + // 没有可用动画时暂停 animator,避免残留动作 + new_CurrAnimation.speed = 0f; + } } } \ No newline at end of file diff --git a/Assets/MyGame/aa/Game/FLZY/BOSS/DLY/FLZY_DLY_BOSS.cs b/Assets/MyGame/aa/Game/FLZY/BOSS/DLY/FLZY_DLY_BOSS.cs index 0ad624fde..3daf058f9 100644 --- a/Assets/MyGame/aa/Game/FLZY/BOSS/DLY/FLZY_DLY_BOSS.cs +++ b/Assets/MyGame/aa/Game/FLZY/BOSS/DLY/FLZY_DLY_BOSS.cs @@ -34,7 +34,7 @@ public class FLZY_DLY_BOSS : MonsterControl_BossBase obj.gold, // goldCount item.posID, // posID obj.skillsGold, // paobei - obj.fishScore, // fishScore + obj.fishScore, // fishScore6 obj.beishu, // beishu JiaFen // action ); diff --git a/Assets/MyGame/aa/Game/FLZY/BOSS/JBP/176_Timeline Variant.prefab b/Assets/MyGame/aa/Game/FLZY/BOSS/JBP/176_Timeline Variant.prefab index 022532b29..5910c2e8f 100644 --- a/Assets/MyGame/aa/Game/FLZY/BOSS/JBP/176_Timeline Variant.prefab +++ b/Assets/MyGame/aa/Game/FLZY/BOSS/JBP/176_Timeline Variant.prefab @@ -8,6 +8,10 @@ PrefabInstance: serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: + - target: {fileID: 1167581238341417, guid: 4c7dd006793f4bb4b8e07709da46a243, type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 901095073939263735, guid: 4c7dd006793f4bb4b8e07709da46a243, type: 3} propertyPath: m_LocalPosition.x diff --git a/Assets/MyGame/aa/Game/FLZY/BOSS/JL/JLBJ.prefab b/Assets/MyGame/aa/Game/FLZY/BOSS/JL/JLBJ.prefab index 1d989b35b..c71021f06 100644 --- a/Assets/MyGame/aa/Game/FLZY/BOSS/JL/JLBJ.prefab +++ b/Assets/MyGame/aa/Game/FLZY/BOSS/JL/JLBJ.prefab @@ -60,7 +60,7 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: bjEndUI: {fileID: 0} - useScorePanel: 1 + useScorePanel: 0 tMP_Score: {fileID: 1728322933195366793} scorePanelPrefab: {fileID: 0} currScore: 0 @@ -69,6 +69,7 @@ MonoBehaviour: posID: 0 paoBei: 0 fishScore: 0 + bJbeishu: 0 showDelay: 3 moveDuration: 0.5 moveEase: 6 diff --git a/Assets/MyGame/aa/Game/FLZY/BOSS/LLBT/192.prefab b/Assets/MyGame/aa/Game/FLZY/BOSS/LLBT/192.prefab index f21037786..36474496e 100644 --- a/Assets/MyGame/aa/Game/FLZY/BOSS/LLBT/192.prefab +++ b/Assets/MyGame/aa/Game/FLZY/BOSS/LLBT/192.prefab @@ -2319,6 +2319,8 @@ MonoBehaviour: isyz: 0 yzID: colliderList: [] + lockPoint: {fileID: 0} + rotationPY: 60 isRotate: 0 ischild0: 1 depthOffset: 280