This commit is contained in:
2026-06-15 18:37:06 +08:00
parent 6442ceb5e8
commit b5e83af832
9 changed files with 152 additions and 33 deletions
+3 -1
View File
@@ -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
+5 -3
View File
@@ -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
@@ -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}
@@ -615,7 +615,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
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<CreateFishManager>
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<int> onScoreAdd = audioID =>
int goldToAdd = killFish.gold; // 立即复制需要的数据
string fishId = killFish.fishId; // 如果需要的话
Action<int> 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<int> 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.普通鱼:
+118 -19
View File
@@ -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<RectTransform>();
// if (rect != null)
// {
// // 1. UI 本地坐标 → Canvas 坐标
// Vector2 canvasPos = CoordinateTransformation.AnchoredPos_ToCanvas(
// rect,
// UIManager.Instance.uiRoot.GetComponent<Canvas>()
// );
// // 2. Canvas 坐标 → 世界坐标
// return CoordinateTransformation.CanvasToWorld(
// canvasPos,
// UIManager.Instance.uiRoot.GetComponent<RectTransform>(),
// 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<RectTransform>();
if (rect != null)
{
// 1. UI 本地坐标 → Canvas 坐标
Vector2 canvasPos = CoordinateTransformation.AnchoredPos_ToCanvas(
rect,
UIManager.Instance.uiRoot.GetComponent<Canvas>()
);
Canvas canvas = UIManager.Instance.uiRoot.GetComponent<Canvas>();
Camera cam = Camera.main;
// 2. Canvas 坐标 → 世界坐标
return CoordinateTransformation.CanvasToWorld(
canvasPos,
UIManager.Instance.uiRoot.GetComponent<RectTransform>(),
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
};
old_CurrAnimation.Play(anim);
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;
}
}
}
@@ -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<int>
);
@@ -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
@@ -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
@@ -2319,6 +2319,8 @@ MonoBehaviour:
isyz: 0
yzID:
colliderList: []
lockPoint: {fileID: 0}
rotationPY: 60
isRotate: 0
ischild0: 1
depthOffset: 280