C# 平行阵列的重叠球面
如何为并行阵列执行OverlapSphere,以检测预制游戏对象的重叠? 这是我的代码,它以随机的位置和大小生成这些预制件C# 平行阵列的重叠球面,c#,arrays,loops,unity3d,instantiation,C#,Arrays,Loops,Unity3d,Instantiation,如何为并行阵列执行OverlapSphere,以检测预制游戏对象的重叠? 这是我的代码,它以随机的位置和大小生成这些预制件 void Platform_Position_Scale_Generator(int i) { posX[i] = Random.Range(minPosRange, maxPosRange + 1); posY[i] = Random.Range(minPosRange, maxPosRange + 1); posZ[i] = 0; s
void Platform_Position_Scale_Generator(int i) {
posX[i] = Random.Range(minPosRange, maxPosRange + 1);
posY[i] = Random.Range(minPosRange, maxPosRange + 1);
posZ[i] = 0;
scaleX[i] = Random.Range(minScaleRange, maxScaleRange + 1);
scaleY[i] = 1;
scaleZ[i] = 1;
}
void Platform_Generator(int i) {
platformPrefabPosition[i].x = posX[i];
platformPrefabPosition[i].y = posY[i];
platformPrefabPosition[i].z = posZ[i];
Instantiate(platformPrefab, platformPrefabPosition[i], Quaternion.identity);
platformPrefab.transform.localScale = new Vector3(scaleX[i], 1, 1);
}
您只需在实例化的平台上创建一个脚本,该脚本使用以下内容:
using UnityEngine;
using System;
public class Example : MonoBehaviour
{
void OnTriggerEnter(Collider collider)
{
if(collider.gameObject.tag == "platform")
{
Destroy(gameObject);
}
}
}
请注意,如果您的游戏对象未设置为触发,您必须将平台游戏对象标记设置为平台,并将OnTiggerEnter分别更改为OnCollisionEnter
此脚本将在与其他平台发生冲突时触发OnTiggerEnter/OnCollisionEnter,然后删除自身 请更清楚地说明您想要什么,执行重叠球体对我来说没有任何意义。不是很清楚吗?很抱歉我生成了这些随机平台。因为它们会重叠,因为它是随机生成的。我怎样才能使它们不会重叠?你不需要这样做吗?所以,基本上你需要检查是否已经有一个对象在尝试实例化新对象,然后返回是否已经有一个,对吗?在这种情况下,您必须创建一个已实例化对象的列表,然后您可以设置碰撞器并运行碰撞器检查,或者使用您引用的渲染器边界脚本进行数学检查。是的,我认为是这样的?我不知道,因为我从来没用过。我只收到别人的来信。我不知道有什么方法可以检查是否有重叠的预制游戏对象。如果有,预置将删除自身并实例化另一个预置平台预置是否附加了碰撞器?如果是这样的话,那是什么样的。有可能不这样做吗?另一种方法涉及到基于游戏对象中心位置的数学,这会变得更加复杂。是的,我想知道这种方法。但是为什么不能使用重叠球体呢?