【问题标题】:Destroy Gameobject according to distance value根据距离值销毁游戏对象
【发布时间】:2015-08-30 06:19:54
【问题描述】:

我有一个脚本可以从预制件中生成场景中的对象,并且我有一个可移动的立方体。如果立方体和克隆对象之间的距离

我有这个 UnityScript:

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

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

}

【问题讨论】:

  • 有什么问题?
  • 我要销毁最近的物体(
  • Unity3D 的正确标签是 unity3d。

标签: unity3d 2d unityscript


【解决方案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);
}
}

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

【讨论】:

    【解决方案2】:

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

    Destroy(cloneObject);
    

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

    使用List需要添加using System.Collections.Generic;

    示例代码:(是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系统。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 2018-04-17
      • 2012-12-06
      相关资源
      最近更新 更多