2015-06-14 38 views
-1

我有一個腳本可以在預製場景中生成場景中的對象,並且我有一個可移動的立方體。如果多維數據集與克隆對象之間的距離爲< 0.3f,我需要一個獲取對象名稱的腳本。根據距離值銷燬Gameobject

我有這個UnityScript:

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

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

} 
+0

這是什麼問題? – G4bri3l

+0

我想摧毀最近的對象(<0.3f) –

+0

Unity3D的正確標記是unity3d。 – aggsol

回答

1

在這種情況下,我認爲這是更好地使用碰撞檢測所推薦的巴里斯Çı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); 
} 
} 

這個腳本應該是附加到您實例化的每個對象上。

0

如果你知道哪些對象接近。您可以使用Destroy

Destroy(cloneObject); 

如果您不知道哪些對象是附近,你可以使用列表中添加克隆對象 ,並檢查它不遠了。(當你創建克隆需要克隆添加到列表中。)

您需要爲使用列表添加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系統。