序言/ * 我最近开始摆弄团结:做一个初学者的乒乓球比赛,因为大多数做的,我一直在试图用现在的3D对象的工作。我的想法是做一个塔防游戏,所以我有一个塔和一个临时目标虚拟物。塔有一个脚本,它应该允许它找到与敌方标记最近的对象,并画出一条线,但这里是问题:*/FindGameObjectsWithTag没有返回对象
我的GameObject.FindGameObjectsWithTag(“Enemy”)函数返回一个空阵列,尽管场景上有一个标记的,启用的对象。
public class Attack : MonoBehaviour
{
GameObject[] enemies;
float dist;
GameObject target = null;
bool targeted = false;
float range = 1000;
bool FindTarget()
{
bool found = false;
enemies = GameObject.FindGameObjectsWithTag("Enemy");
//print(GameObject.FindGameObjectsWithTag("Enemy"));
foreach (GameObject enemy in enemies)
{
float tmpd = Vector3.Distance(enemy.transform.position, transform.position);
if (tmpd <= range && dist > tmpd)
{
dist = tmpd;
target = enemy;
found = true;
}
}
return found;
}
// Update is called once per frame
void Update()
{
if (!targeted)
targeted = FindTarget();
else {
Debug.DrawLine(target.transform.position, transform.position, Color.red);
dist = Vector3.Distance(target.transform.position, transform.position);
if (dist > range)
targeted = false;
}
}
}
我看了虽然有一千个其他线程,并找不到我的问题是什么。任何帮助将不胜感激。
这可能是一个愚蠢的问题,但你是** 100%**确定敌人真的有这个确切的标签 –
是否启用这些对象('activeInHierarchy')? –
是的,这也发生在我身上,所以我直接复制了文本以确保它完全相同。 只要我能从检查员屏幕上看到它们就被启用,所有的滴答滴答都会打勾,我还需要检查什么? – totalolage