Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 根据距离值销毁游戏对象_Unity3d_2d_Unityscript - Fatal编程技术网

Unity3d 根据距离值销毁游戏对象

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

我有一个脚本,可以从预设中生成场景中的对象,还有一个可移动的立方体。如果多维数据集和克隆对象之间的距离小于0.3f,我需要一个脚本来获取对象的名称

我有一个UnityScript:

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