根据距离值销毁Gameobject

时间:2015-06-14 19:24:19

标签: unity3d 2d unityscript

我有一个脚本,可以从预制件中生成场景中的对象,我有一个可移动的立方体。我想要一个脚本,如果多维数据集和克隆对象之间的距离是< 0.3f。

我有这个UnityScript:

var distance1 = Vector3.Distance(Food.transform.position, cube1.transform.position);
Debug.Log(distance1);

if(distance1 < 0.3f)
{
   //Destroy nearest object

}

2 个答案:

答案 0 :(得分:1)

在这种情况下,我认为最好使用BarışÇırıka推荐的碰撞检测...但如果你想通过距离得到它我认为你可以做类似的事情

var MyCube =  GameObject.FindGameObjectsWithTag("MyCube");
LateUpdate(){
var distance = Vector3.Distance(this.gameObject.transform.position, MyCube.transform.position);
if(distance < 0.3f)
{
Destroy(this.gameObject);
}
}

此脚本应附加到您实例化的每个对象。

答案 1 :(得分:0)

如果您知道哪个物体在附近。您可以使用Destroy

Destroy(cloneObject);

如果您不知道哪些对象在附近,您可以使用List添加克隆对象 并检查它是否靠近。(当您创建克隆时,您需要将克隆添加到列表中。)

您需要添加using System.Collections.Generic;才能使用List。

示例代码:(它是C#代码,但您可以理解逻辑)

....
using System.Collections.Generic;
public List<GameObject>cloneObjectList;

private void cloneObject(){
  GameObject cloneObject = Instantiate(originalPrefab,position,rotation);
  cloneObjectList.add(cloneObject);
}

private void checkDistance(){
   foreach(GameObject cloneObject in cloneObjectList){
      float distance = Vector3.Distance(Food.transform.position, cloneObject.transform.position);
      if(distance <0.3f){
         cloneObjectList.Remove(cloneObject);
         Destroy(cloneObject);
      }
   }
}

此外,您可以使用Collision detection系统。