Unity3d 根据距离值销毁游戏对象
我有一个脚本,可以从预设中生成场景中的对象,还有一个可移动的立方体。如果多维数据集和克隆对象之间的距离小于0.3f,我需要一个脚本来获取对象的名称 我有一个UnityScript:Unity3d 根据距离值销毁游戏对象,unity3d,2d,unityscript,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 obje
var distance1 = Vector3.Distance(Food.transform.position, cube1.transform.position);
Debug.Log(distance1);
if(distance1 < 0.3f)
{
//Destroy nearest object
}
var Distance 1=Vector3.距离(Food.transform.position,cube1.transform.position);
调试日志(距离1);
如果(距离1<0.3f)
{
//摧毁最近的物体
}
如果你知道哪一个物体在附近。你可以用
如果不知道附近有哪些对象,可以使用列表添加克隆对象
并检查它是否靠近。(创建克隆时,需要将克隆添加到列表中。)
您需要使用System.Collections.Generic添加代码>用于使用列表
示例代码:(这是C代码,但你能理解逻辑)
。。。。
使用System.Collections.Generic;
公共列表cloneobjectlist;
私有void cloneObject(){
GameObject cloneObject=实例化(原始原型、位置、旋转);
cloneObjectList.add(cloneObject);
}
专用void checkDistance(){
foreach(cloneObject列表中的游戏对象cloneObject){
浮动距离=矢量3.距离(Food.transform.position、cloneObject.transform.position);
如果(距离在这种情况下,我认为最好使用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);
}
}
var MyCube=GameObject.FindGameObjectsWithTag(“MyCube”);
LateUpdate(){
var distance=Vector3.distance(this.gameObject.transform.position,MyCube.transform.position);
如果(距离<0.3f)
{
摧毁(这个游戏对象);
}
}
此脚本应附加到您实例化的每个对象。问题是什么?我想销毁最近的对象(<0.3f)。Unity3D的正确标记是Unity3D。
....
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);
}
}
}
var MyCube = GameObject.FindGameObjectsWithTag("MyCube");
LateUpdate(){
var distance = Vector3.Distance(this.gameObject.transform.position, MyCube.transform.position);
if(distance < 0.3f)
{
Destroy(this.gameObject);
}
}