如何在随机无碰撞位置实例化 GameObject?

How to instantiate GameObject at random collision free position?

我正在用 Unity 制作游戏。我在随机位置实例化 (circle) GameObjects 并且效果很好。我想要做的是仅在不会与其他 GameObjects 重叠的位置实例化。我在互联网上找到的解决方案都没有解决我的问题,那么我该怎么办?这可能吗?

好的。为了检测您的圈子是否有 space,您需要使用对撞机或 mathematical/volume 方程。但无论采用哪种方式,您都需要参考一个位置(变换 x、y、z)来对区域进行采样,并确定您的圆圈是否可以在那里生成。

您可以执行以下操作之一:

  1. 像往常一样创建对象,但如果发生碰撞,立即销毁对象。然后生成另一个。
  2. 将生成器游戏对象移动到与上述检查相同的位置,但只有在确定圆圈有空间时才会生成它。 (编辑) 然后禁用或移动生成器,你将只需要这些对象之一来完成所有生成。
  3. 让 class 从一组预定义位置(向量 3 或场景中的现有游戏对象)中选择生成圆圈的那个,然后执行上述检查之一。

这取决于您的需求以及重叠的可能性。

希望对您有所帮助。