【发布时间】:2017-12-23 07:33:30
【问题描述】:
我正在使用 Unity 制作游戏。我在随机位置实例化(圆圈)GameObjects,它运行良好。我要做的是仅在不会与其他GameObjects 重叠的位置上进行实例化。我在互联网上找到的解决方案没有解决我的问题,我该怎么办?这可能吗?
【问题讨论】:
标签: c# unity3d random gameobject
我正在使用 Unity 制作游戏。我在随机位置实例化(圆圈)GameObjects,它运行良好。我要做的是仅在不会与其他GameObjects 重叠的位置上进行实例化。我在互联网上找到的解决方案没有解决我的问题,我该怎么办?这可能吗?
【问题讨论】:
标签: c# unity3d random gameobject
好的。为了检测您的圆圈是否有空间,您需要使用对撞机或数学/体积方程。但是无论您采用哪种方式,您都需要参考一个位置(变换 x、y、z)来对一个区域进行采样并确定您的圆圈是否可以在那里生成。
您可以执行以下操作之一:
这取决于您的需求以及重叠的可能性。
希望对您有所帮助。
【讨论】:
Transform 来检查该位置是否没有其他对象 - 如果是,那么您可以实例化新的游戏对象,如果没有,请选择另一个随机位置,直到你会得到一个免费的。
Circle Collider 2D 组件的 GO,所以它不会在屏幕上渲染任何东西。您生成随机位置,更改生成器的transform.position,并检查OnTriggerEnter2D 是否报告碰撞 - 如果没有,Instantiate 使用该位置的新游戏对象,如果是,生成新的随机生成位置和重复直到你得到一个空闲空间。