我很难理解,因为我无法理解这个问题:
我正在尝试使用维基百科上的公式使物体在围绕行星的圆形轨道上移动,这里的任何方式都是我的代码:
public void circularOrbit(Collider2D col,float planetMass){
mPlanet = planetMass;
dist = new Vector2 (col.gameObject.transform.position.x - gameObject.transform.position.x, col.gameObject.transform.position.y - gameObject.transform.position.y);
r = dist.magnitude;
print (r);
tdist = new Vector2 (-dist.y, dist.x).normalized; // 2D vector prependicular to the dist vector .
float speed = Mathf.Sqrt ( G*mPlanet / r) ; // Calculate the velocity .
print (speed);
rigidbody2D.velocity = tdist * speed;
}
2D Collidercol
是行星轨道的对撞机,当我的物体撞到这个对撞机时,它根据我所做的计算开始以圆形方式移动。
一切都在具有某些条件的固定更新中进行(与本主题无关),我面临的问题是我的距离幅度每帧都在变化,我需要它保持不变!
这会导致问题,因为速度会改变并且对于其他脚本我需要修复它。
r
以下是距离大小的一些值:
4.602833
4.602901
4.603098
变化很小,但对我的游戏性影响太大。
那么请解释为什么会发生这种情况?
谢谢 。