This commit is contained in:
2026-07-20 01:44:28 +08:00
parent 3f2d0ddada
commit fc063b7615
6 changed files with 113 additions and 121 deletions
@@ -1516,19 +1516,18 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
/// <param name="coinNum">红包拆分后的每份金额,长度应 >= count</param>
/// <param name="v3Point">金币最终飞回的世界坐标(一般是炮台位置)</param>
/// <param name="count">理论上要“死”的总数量(鱼 + 纯金币)</param>
public void Id_DieListFish_FX(List<string> guids, List<RedPacketRecord> coinNum, Vector3 v3Point, int count)
public void Id_DieListFish_FX(List<string> guids, List<RedPacketRecord> coinNum, Vector3 v3Point, int count, bool isLocal = false)
{
if (coinNum == null || coinNum.Count == 0) return;
// 1. 先处理“真的有鱼”的部分
// 1. 先处理"真的有鱼"的部分
int realCount = Mathf.Min(guids.Count, coinNum.Count, count);
for (int i = 0; i < realCount; i++)
{
// 用你原来的单条逻辑,不动
Id_DieFish_FX(guids[i], coinNum[i], v3Point);
Id_DieFish_FX(guids[i], coinNum[i], v3Point, isLocal);
}
// 2. 不足的部分,用“屏幕随机位置的金币特效”补齐
// 2. 不足的部分,用"屏幕随机位置的金币特效"补齐
int needExtra = count - realCount;
if (needExtra <= 0) return;
@@ -1537,7 +1536,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
for (int i = 0; i < maxExtra; i++)
{
var red = coinNum[realCount + i];
SpawnRandomCoinFX(red, v3Point);
SpawnRandomCoinFX(red, v3Point, isLocal);
}
}
/// <summary>
@@ -1621,7 +1620,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
/// <summary>
/// 按 ID 杀死一条鱼(带特效 + 金币飞出动画)。
/// </summary>
public void Id_DieFish_FX(string fishId, RedPacketRecord coinNum, Vector3 v3Point)
public void Id_DieFish_FX(string fishId, RedPacketRecord coinNum, Vector3 v3Point, bool isLocal = false)
{
if (!fishDatas_hashCodekey.TryGetValue(fishId, out var monster)) return;
if (false)
@@ -1649,8 +1648,8 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
var coinScript = award.GetComponent<BJBase>();
coinScript.Init(coinNum.Amount, v3Point);
//coinScript.endPoint = v3Point;
coinScript.isBoss = true;
coinScript.isLocalCoin = isLocal;
coinScript.SetCoinCount();
}
@@ -1664,7 +1663,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
/// <summary>
/// 不依赖鱼,只在屏幕内随机一个位置生成金币特效,然后飞回指定点。
/// </summary>
private void SpawnRandomCoinFX(RedPacketRecord coinNum, Vector3 targetWorldPos)
private void SpawnRandomCoinFX(RedPacketRecord coinNum, Vector3 targetWorldPos, bool isLocal = false)
{
// 1. 随机一个屏幕坐标
Vector2 screenPos = new Vector2(
@@ -1678,7 +1677,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
// 3. 实例化金币特效(沿用你原来的 award 逻辑)
var award = Instantiate(
dieFXPrefabAward, // 或者用某个专门的“掉金币” prefab
dieFXPrefabAward, // 或者用某个专门的"掉金币" prefab
currGameType.subPanelParent.parent);
var rect = award.GetComponent<RectTransform>();
@@ -1689,6 +1688,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
coinScript.Init(coinNum.Amount, targetWorldPos);
coinScript.isBoss = true;
coinScript.isLocalCoin = isLocal;
coinScript.SetCoinCount();
}
@@ -1767,6 +1767,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
var coinScript = award.GetComponent<BJBase>();
coinScript.Init(killFish.gold, sitData.transform.position, killFish.userId, sitData.posID, killFish.param);
coinScript.isLocalCoin = sitData.user == GameManager.Instance.user.id;
coinScript.isBoss = false;
coinScript.JiaFen = onScoreAdd;
coinScript.SetCoinCount();
@@ -1819,6 +1820,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
var coinScript = award.GetComponent<BJBase>();
coinScript.Init(killFish.gold, sitData.transform.position, killFish.userId, sitData.posID, killFish.param);
coinScript.isLocalCoin = sitData.user == GameManager.Instance.user.id;
coinScript.isBoss = false;
coinScript.JiaFen = onScoreAdd;
coinScript.SetCoinCount();
@@ -1849,6 +1851,7 @@ public class CreateFishManager : MonoSingleton<CreateFishManager>
var coinScript = award.GetComponent<BJBase>();
coinScript.startPoint = award.transform.position;
coinScript.Init(killFish.gold, sitData.transform.position, killFish.userId, sitData.posID, killFish.param);
coinScript.isLocalCoin = sitData.user == GameManager.Instance.user.id;
coinScript.startPoint = award.transform.position;
coinScript.isBoss = false;
coinScript.JiaFen = onScoreAdd;