我正在Unity中尝试使用C#创建一个简单的路径系统。
到目前为止,一切都很完美。但是要创建一个路径跟随器,我需要跟随器每帧移动的位置。路径总是有一个半径,一个起点和一个长度,其余的未知。
现在,我如何计算路径跟随者在每一帧中的位置,即弧上的点?我需要一个函数,它将跟随者在路径上的百分比位置作为参数,并返回场景中的全局位置。下面是一个示例:圆弧的长度L、半径r和起点A都已给定。我试图计算的是随机点D:
我自己计算的那个点是一团乱麻,根本不起作用,尽管我已经做了一些研究。所以我在寻找一个简单易懂的解决方案。
2条答案
按热度按时间8yparm6h1#
the length of the arc L, the radius r and the starting point A are given
2 * r * pi
. A whole circumference, calculated usingr=5
:fullCircumference = 31.4159265359
.L
, we know it'sL/fullCircumference
gives0.21263598811
which is the fraction that L takes from the whole circumference.2PI
->0.21263598811 * 2 * PI = 1.33603131627 rad
So we need to calculate the offset in radians around the circle.
B
and I can't assume that though the radius alone. So I will just ignore this for now and offset the forumla by 90° (or half pi) to get toA
D(sin(x - pi/2) * r, cos(x - pi/2)) * r;
The c# code would look like this (didn't compile though):
C
, now you want a random point D between A and C on that arc.arcRadians
in radians, so we can just mutiply that with0..1
:code:
And there you go:
mbyulnm02#
Percentage介于0和1之间,length是弧长。您可以将中心移到0,0的中心,也可以偏移中心,使点从所需的位置开始。
如果你想让它在另一边,让半径为负。如果你想让它在另一边,让弧长为负。
终点是从弧的起点到弧的终点的Angular 。Angular 是终点乘以百分比。然后将极坐标(Angular 和半径)转换为笛卡尔坐标(x,y)并将其偏移圆心。