圆上某个点坐标的计算公式:
x
=
c
e
n
t
e
r
X
+
r
a
d
i
u
s
∗
c
o
s
(
a
n
g
l
e
∗
P
I
/
180
)
\ x = centerX + radius * cos(angle * PI / 180)
x=centerX+radius∗cos(angle∗PI/180)
y
=
c
e
n
t
e
r
Y
+
r
a
d
i
u
s
∗
s
i
n
(
a
n
g
l
e
∗
P
I
/
180
)
\ y = centerY + radius * sin(angle * PI / 180)
y=centerY+radius∗sin(angle∗PI/180)
centerX centerY 圆的中心点
radius:半径
angle:旋转角度(起始方向为 3 点钟方向)
本案例将按钮的位置设计成围绕着生成器旋转排列。当按钮数量为 3 时,就每隔 120° 放一个按钮,当按钮数量为 4 时,就隔 90° 。
代码示意:
// 根据防御塔数量决定按钮的旋转角度
for (int i = 0; i < _createBtnList.Count; i++)
{
// 计算旋转角度
float angle = 360 / _createBtnList.Count * i + 90;
// 使用公式算出按钮坐标
//x = centerX + radius * cos(angle * 3.14 / 180)
//y = centerY + radius * sin(angle * 3.14 / 180)
_createBtnList[i].position = new Vector3(100 * Mathf.Cos(angle * Mathf.PI / 180), 100 * Mathf.Sin(angle * Mathf.PI / 180), 0);
}
通过遍历按钮列表 List _createBtnList ,计算每个按钮的旋转角度,再根据角度计算出按钮的坐标。最后再给这个角度增加90°,让起始坐标从 3 点钟方向变为 12 点钟方向。
更多内容请查看总目录【Unity】Unity学习笔记目录整理