This commit is contained in:
2026-07-28 10:59:08 +08:00
parent 44a1029070
commit 9aa0480043
3 changed files with 45 additions and 23 deletions
@@ -1596,28 +1596,26 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
private void UpdateSingleLockFX(SitPosData sit, MonsterContral monster, Transform hitPos, GameObject icon)
{
Vector3 pos = Vector3.zero;
if (!hitPos.gameObject.activeInHierarchy)
// ⭐ 核心原则:鱼还活着就显示图标,鱼死了才隐藏
if (monster == null || !monster.gameObject.activeInHierarchy)
{
// ⭐ 原始 hitPos 失效 → 用 ResolveLockTransform 重新找一个有效位置
// 统一逻辑:colliderList 第一个活跃 → lockPoint → transform
Transform fallback = ResolveLockTransform(monster);
if (fallback == null || !fallback.gameObject.activeInHierarchy)
{
if (icon.activeSelf) icon.SetActive(false);
return;
}
pos = fallback.position;
// ⭐ 修复:fallback 有效时也要激活图标(之前漏掉导致子锁定图标偶尔不显示)
if (!icon.activeSelf) icon.SetActive(true);
if (icon.activeSelf) icon.SetActive(false);
return;
}
// 鱼还活着 → 确定位置(优先 hitPos,失效则用 monster.transform 兜底)
Vector3 pos;
if (hitPos != null && hitPos.gameObject.activeInHierarchy)
{
pos = hitPos.position;
}
else
{
pos = hitPos.position;
if (!icon.activeSelf) icon.SetActive(true);
// hitPos 失效 → 直接用鱼自身位置,不再尝试 ResolveLockTransform(避免二次失败)
pos = monster.transform.position;
}
if (!icon.activeSelf) icon.SetActive(true);
pos.z = Camera.main.transform.position.z + 1;
icon.transform.position = pos;
}
@@ -1670,12 +1668,11 @@ public class GameMainPanel_FishBase : GameMainPanel_Base
currSitData.SetLockTarget(target, lockTr);
SyncLock(new List<string> { target?.guid }, colliderIndex);
// ⭐ 切换目标的瞬间立即更新主锁定图标位置和显示,
// 避免切换那帧图标还停在旧位置或没显示出来
if (currSitData.lockFX != null && lockTr != null && lockTr.gameObject.activeInHierarchy)
// ⭐ 切换目标瞬间立即更新主锁定图标(鱼还活着就一定显示)
if (currSitData.lockFX != null && target.gameObject.activeInHierarchy)
{
if (!currSitData.lockFX.activeSelf) currSitData.lockFX.SetActive(true);
Vector3 p = lockTr.position;
Vector3 p = (lockTr != null && lockTr.gameObject.activeInHierarchy) ? lockTr.position : target.transform.position;
p.z = Camera.main.transform.position.z + 1;
currSitData.lockFX.transform.position = p;
}