根据距离值销毁Gameobject
Destroy Gameobject according to distance value
我有一个脚本可以从预制件生成场景中的对象,并且我有一个可移动的立方体。如果立方体和克隆对象之间的距离小于 0.3f,我想要一个脚本来获取对象的名称。
我有这个 UnityScript:
var distance1 = Vector3.Distance(Food.transform.position, cube1.transform.position);
Debug.Log(distance1);
if(distance1 < 0.3f)
{
//Destroy nearest object
}
如果你知道哪个物体在附近。您可以使用 Destroy.
Destroy(cloneObject);
如果不知道附近有哪些物体,可以用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系统。
在这种情况下,我认为最好使用 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.3f,我想要一个脚本来获取对象的名称。
我有这个 UnityScript:
var distance1 = Vector3.Distance(Food.transform.position, cube1.transform.position);
Debug.Log(distance1);
if(distance1 < 0.3f)
{
//Destroy nearest object
}
如果你知道哪个物体在附近。您可以使用 Destroy.
Destroy(cloneObject);
如果不知道附近有哪些物体,可以用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系统。
在这种情况下,我认为最好使用 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);
}
}
此脚本应附加到您实例化的每个对象。