【发布时间】:2021-03-11 01:26:52
【问题描述】:
到目前为止,我所拥有的是圆圈的边缘。
我知道这将涉及嵌套的 for 循环。这是我目前所拥有的:
public GameObject player;
private GameObject playerGrid;
public int numOfObjects;
private Vector3 centerPos;
public int size = 2;
public Vector2 speed = new Vector2(50, 50);
private float smoothTime = 0.25f;
void Start()
{
playerGrid = new GameObject();
centerPos = transform.position;
for (int i = 0; i < numOfObjects; i++)
{
float pointNum = (i * 1.0f) / numOfObjects;
float angle = pointNum * Mathf.PI * 2;
float r = size / 2 * (Mathf.PI);
float x = Mathf.Sin(angle) * r;
float y = Mathf.Cos(angle) * r;
Vector3 pointPos = new Vector3(x, y, 0) + centerPos;
GameObject obj = Instantiate(player, pointPos, Quaternion.identity);
obj.transform.SetParent(playerGrid.transform);
}
}
我被困在如何为嵌套的 for 循环实现条件。此外,我无法理解嵌套 for 循环中列位置的计算。我相信条件将是该列或行的 I 的开始和结束: for(int j = i + 1; j
对于 col 位置,我认为它会增加角度足以让正方形为该列提供空间:float x = (Mathf.Sin(angle) + somethingHere) * r;
我只是不知道如何从这里开始。
【问题讨论】:
-
其实你宁愿穿过一个网格(2个循环)并检查你是否在圆圈内
-
公平点,但我如何获得正方形的定位,使它们不重叠?对于我的游戏,正方形的像素单位大小必须是动态的。 @derHugo
-
好吧,就像您发布的图片一样:您只需确保将它们始终彼此相隔 1 个单位.. 因此,如果您的正方形尺寸增加,网格尺寸也会相应增加
-
好的,我会在输入后发布解决方案。
-
给出了哪些值?圆半径?对象数量?对象大小(对于方形对象)?
标签: c# unity3d math geometry trigonometry