我想将目标放在:最近的位置。
ps.s。我是新来的。
public class ExampleClass : MonoBehaviour
{
public GameObject FindClosestEnemy()
{
GameObject[] gos;
gos = GameObject.FindGameObjectsWithTag("Enemy");
GameObject closest = null;
float distance = Mathf.Infinity;
Vector3 position = transform.position;
foreach (GameObject go in gos)
{
Vector3 diff = go.transform.position - position;
float curDistance = diff.sqrMagnitude;
if (curDistance < distance)
{
closest = go;
distance = curDistance;
}
} //can i put for exemple this specific gameobjet (target)
//on the closest enemyobject
//target.transform.position = closest.transform.position;
return closest;
}
}
让炮塔跟随我所确定的目标,但会自动找到我不知道的最近目标
Vector3 diff = go.transform.position - position;
float curDistance = diff.sqrMagnitude;
更改为:
float curDistance = Vector3.Distance(transform.position, go.transform.position);
参考:
https://docs.unity3d.com/ScriptReference/Vector3.Distance.html
您应该使用Vector3.Distance
,然后可以简单地使用Vector3.Distance
和Linq OrderBy
来获取最近的对象
OrderBy