【发布时间】:2020-01-14 18:26:10
【问题描述】:
目前我正在为游戏开发轨道系统。我已经知道了,所以一个对象将根据一个介于 0.0 和 1.0 之间的进度值沿着一个圆圈移动(0.5 是圆圈的一半)。我是这样计算的:
float angle = Mathf.Deg2Rad * 360 * t;
float xPos = Mathf.Sin(angle) * xAxis;
float yPos = Mathf.Cos(angle) * yAxis;
return new Vector3(xPos, yPos, 0.0f);
t 只是 deltatime,xAxis/yAxis 变量是圆的半径。 不过,我目前有点坚持的是,我如何才能根据位置获得绕圈的进展。因此,如果我有一个物体撞到圆的底部,我如何计算它是 0.5 的进度?
【问题讨论】:
-
如果 xAxis != yAxis 你实际上有一个椭圆而不是一个圆。如果您希望您的轨道在物理上准确,您应该查看Kepler's Law。
标签: algorithm math trigonometry