如何计算数组gameObject之间的距离?

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

如何计算生成的立方体之间的距离。骰子上的指定脚本只指定了不同的速度。如何计算各个实例化立方体之间的距离? 对不起,英语不好,我用的是google trnslator。我把代码附在后面,我是个单元的初学者

public class vehicless : MonoBehaviour 
{
    [SerializeField] private GameObject[] vehicle;
    [SerializeField] private Transform spawnPos;
    [SerializeField] private float minTime;
    [SerializeField] private float maxTime;

    int randomInt;

    // Use this for initialization
    void Start () 
    {
        StartCoroutine(SpawnVehicle()); 
    }

    // Update is called once per frame
    void Update () 
    {   
    }

    private IEnumerator  SpawnVehicle()
    {
        int i=1;        
        while(true)
        {     
            randomInt = Random.Range(0,vehicle.Length);

            yield return new WaitForSeconds(Random.Range(minTime,maxTime));

            GameObject myPrefabInstance = Instantiate(vehicle[randomInt],spawnPos.position,Quaternion.identity);
            var red =   myPrefabInstance.gameObject.name; //NAME OBJECT
             var  namecube  = red + i ;
             Debug.Log("Name object:"+namecube ) ;   
             i++;
         }
    } 
}   


//  float   dist = Vector3.Distance(----------);

谢谢你的帮助

arrays unity3d distance gameobject
1个回答
0
投票

如果你需要快速找到2个对象之间的距离,我建议你把距离储存在字典里,Tuple Key = (GameObject, GameObject),Value = float。

 Dictionary<(GameObject, GameObject), float>() 



public Dictionary<(GameObject, GameObject), float>() calculate(GameObject[] objs)
{
    var distanceArray = new Dictionary<(GameObject, GameObject), float>();

    for (int i = 0; i < objs.Length; i++)
    {
        for (int j = i; j < objs.Length; j++)
        {
          if (i == j)
          {
            //distance between same obj is 0f
            continue;
          }
          else
          {
            distanceArray.Add((objs[i], objs[j]), Vector3.Distance(objs[i].transform.position, objs[j].transform.position));
          }
        }
    }
   return distanceArray;
}

之后你就可以像这样快速的找到两个对象之间的距离。

    if (distanceArray.ContainsKey((obj1, obj2)))
    {
        distance = distanceArray[(obj1, obj2)];
    }
    else if (distanceArray.ContainsKey((obj2, obj1)))
    {
        distance = distanceArray[(obj2, obj1)];
    }
    else if (obj1 == obj2)
    {
        distance = 0f;
    }
    else
    {
        //Error
    }

你的问题不是很容易理解,我只是添加了计算距离的方法 在每个新产生的车辆之后。

    GameObject myPrefabInstance = Instantiate(vehicle[randomInt],spawnPos.position,Quaternion.identity);
    for (int i = 0; i < vehicle.Length; i++)
    {
        var distance = Vector3.distance(myPrefabInstance.transform.position, vehicle[i].transform.position);
        Debug.Log($"Distance: {distance}");
    }

0
投票

我想象一下,立方体有不同的速度,物体可以很多,比如10.15个立方体,一个速度较高的立方体会在速度较慢的立方体面前减速。

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