我想自动找到敌人并将目标放在最接近的敌人上。 Unity 3D

问题描述 投票:0回答:2

我想将目标放在:最近的位置。

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;
     }
}

让炮塔跟随我所确定的目标,但会自动找到我不知道的最近目标

c# unity3d target auto closest
2个回答
0
投票
        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


0
投票

您应该使用Vector3.Distance,然后可以简单地使用Vector3.DistanceLinq OrderBy来获取最近的对象

OrderBy
© www.soinside.com 2019 - 2024. All rights reserved.