思路
取圆上任意一点连接圆心即为半径,以此半径为斜边作直角三角形。当已知圆心位置与半径长度时,即可得该点与圆心在直角三角形两直角边方向上的位置偏移,从而得出该点的位置。
实现
核心代码
offsetX = radius * Mathf.Cos(angle * Mathf.PI / 180);
offsetY = radius * Mathf.Sin(angle * Mathf.PI / 180);
*Unity 中cos 和sin 的计算都以弧度为单位(弧度 = 角度 * π / 180)。
沿圆周创建
for (float angle = 0; angle <= 360; angle += fanAngle)
{
trans = Instantiate(centerTrans);
trans.localPosition = new Vector3(centerTrans.localPosition.x + radius * Mathf.Cos(angle * Mathf.PI / 180), centerTrans.localPosition.y, centerTrans.localPosition.z + (radius * Mathf.Sin(angle * Mathf.PI / 180)));
}
上述代码为围绕圆心位置Y 轴正方向逆时针创建。如需顺时针创建,只需将X 轴和Z 轴上的偏移量进行互换。如需围绕Z 轴或X 轴创建,则将对应方向上的偏移量赋予Y 轴,对应方向上位置不进行偏移。