unity3d 如何根据对象碰撞器的大小和对象的数量生成圆形点

ryevplcw  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(159)

我正在做一个即时战略游戏,我试图处理单位形成。
我已经试着找到所有单位的中心,并将其添加到位置,如果你点击它的工作,但他们仍然分散。所以,如果你能帮助我出来,我很感激。

cunj1qz1

cunj1qz11#

对于基本的解决方案,你可以使用Unity的Random.insideUnitCircle方法,该方法返回半径为1的圆内或圆上的一个随机点,这将为你提供一个可以在圆内每单位生成的随机点。
如果您正在寻找使点彼此等距的功能,那么有许多解决方案,但简单的是:

private List<Vector3> _points = new();

for (var i = 0; i < numberOfPoints; i++)
{
    var angle = i * Mathf.PI * 2 / numberOfPoints;
    var point = new Vector3(Mathf.Cos(angle), Mathf.Sin(angle), 0) * radius;
    _points.Add(point);
}

其中numberOfPoints是您拥有的单位数,或单位Collidersradius是选择圆的大小。

相关问题