cun
This commit is contained in:
@@ -65,7 +65,10 @@ public class SitPosData : MonoBehaviour
|
||||
public MonsterContral monCotl_Lock;
|
||||
public Transform monCotl_Lock_Position;
|
||||
public bool isLock = false;
|
||||
public GameObject lockFX;
|
||||
public GameObject lockFX; // 主锁定图标(单发/双倍用)
|
||||
public List<GameObject> lockFX_Triple = new List<GameObject>(); // 三发锁定额外2个图标
|
||||
public List<MonsterContral> tripleLockTargets = new List<MonsterContral>();
|
||||
public List<Transform> tripleLockPositions = new List<Transform>();
|
||||
|
||||
// -------------------------
|
||||
// UI
|
||||
@@ -261,6 +264,77 @@ public class SitPosData : MonoBehaviour
|
||||
monCotl_Lock_Position = hitPos;
|
||||
isLock = monster != null;
|
||||
lockFX.SetActive(isLock);
|
||||
|
||||
// 非三发锁定 → 隐藏额外图标
|
||||
if (!isLock) HideTripleLockIcons();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 设置三发锁定目标(3个目标分别追踪)
|
||||
/// </summary>
|
||||
public void SetTripleLockTargets(List<(MonsterContral monster, Transform hitPos)> targets)
|
||||
{
|
||||
if (targets == null || targets.Count == 0)
|
||||
{
|
||||
HideTripleLockIcons();
|
||||
return;
|
||||
}
|
||||
|
||||
// 确保 lockFX_Triple 有2个克隆的图标(+主图标=3个)
|
||||
EnsureTripleLockIcons();
|
||||
|
||||
tripleLockTargets.Clear();
|
||||
tripleLockPositions.Clear();
|
||||
|
||||
// 第一个目标用主 lockFX
|
||||
var primary = targets[0];
|
||||
monCotl_Lock = primary.monster;
|
||||
monCotl_Lock_Position = primary.hitPos;
|
||||
isLock = true;
|
||||
lockFX.SetActive(true);
|
||||
tripleLockTargets.Add(primary.monster);
|
||||
tripleLockPositions.Add(primary.hitPos);
|
||||
|
||||
// 第二个和第三个目标用 lockFX_Triple
|
||||
for (int i = 1; i < targets.Count && i < 3; i++)
|
||||
{
|
||||
int idx = i - 1;
|
||||
if (idx < lockFX_Triple.Count && lockFX_Triple[idx] != null)
|
||||
{
|
||||
lockFX_Triple[idx].SetActive(true);
|
||||
tripleLockTargets.Add(targets[i].monster);
|
||||
tripleLockPositions.Add(targets[i].hitPos);
|
||||
}
|
||||
}
|
||||
|
||||
// 隐藏多余的
|
||||
for (int i = targets.Count - 1; i < lockFX_Triple.Count; i++)
|
||||
{
|
||||
if (lockFX_Triple[i] != null)
|
||||
lockFX_Triple[i].SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
private void EnsureTripleLockIcons()
|
||||
{
|
||||
while (lockFX_Triple.Count < 2 && lockFX != null)
|
||||
{
|
||||
var clone = GameObject.Instantiate(lockFX, lockFX.transform.parent);
|
||||
clone.name = lockFX.name + "_Triple" + (lockFX_Triple.Count + 1);
|
||||
clone.transform.localScale = lockFX.transform.localScale * 0.5f;
|
||||
lockFX_Triple.Add(clone);
|
||||
}
|
||||
}
|
||||
|
||||
public void HideTripleLockIcons()
|
||||
{
|
||||
foreach (var icon in lockFX_Triple)
|
||||
{
|
||||
if (icon != null)
|
||||
icon.SetActive(false);
|
||||
}
|
||||
tripleLockTargets.Clear();
|
||||
tripleLockPositions.Clear();
|
||||
}
|
||||
|
||||
public void ClearLock()
|
||||
@@ -269,6 +343,7 @@ public class SitPosData : MonoBehaviour
|
||||
monCotl_Lock_Position = null;
|
||||
isLock = false;
|
||||
lockFX.SetActive(false);
|
||||
HideTripleLockIcons();
|
||||
ChangeState(TurretState.Idle);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user