C# 平行阵列的重叠球面

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

如何为并行阵列执行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;

    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,然后删除自身

请更清楚地说明您想要什么,执行重叠球体对我来说没有任何意义。不是很清楚吗?很抱歉我生成了这些随机平台。因为它们会重叠,因为它是随机生成的。我怎样才能使它们不会重叠?你不需要这样做吗?所以,基本上你需要检查是否已经有一个对象在尝试实例化新对象,然后返回是否已经有一个,对吗?在这种情况下,您必须创建一个已实例化对象的列表,然后您可以设置碰撞器并运行碰撞器检查,或者使用您引用的渲染器边界脚本进行数学检查。是的,我认为是这样的?我不知道,因为我从来没用过。我只收到别人的来信。我不知道有什么方法可以检查是否有重叠的预制游戏对象。如果有,预置将删除自身并实例化另一个预置平台预置是否附加了碰撞器?如果是这样的话,那是什么样的。有可能不这样做吗?另一种方法涉及到基于游戏对象中心位置的数学,这会变得更加复杂。是的,我想知道这种方法。但是为什么不能使用重叠球体呢?