2015-06-14 3 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 - unit3d. – aggsol

ответ

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

этот сценарий должен быть прикрепленный к каждому объекту, который вы создаете.

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 систему.

Смежные вопросы