1
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user