圆轨道公式不适用于统一3D

我正在研究一个游戏,我必须实现一些像轨道和重力这样的空间物理学......

我的主要问题是我无法在一个行星(或另一个物体)周围正确地制作GameObject轨道,我正在尝试使用物理教科书中的一个老着名公式来做到这一点:

v = sqrt(G *((m1 + m2)/ r))

其中v是轨道物体的速度,G是常数,m1和m2是轨道物体和行星的质量,r是m1和m2中心的距离。

这是我的实现:

void circularOrbit(){
    // Get the distance between the two object centers .
    dist = new Vector2 (Planet.renderer.bounds.center.x - renderer.bounds.center.x, Planet.renderer.bounds.center.y - renderer.bounds.center.y);
    r = dist.magnitude;
    tdist = new Vector2 (dist.x, -dist.y).normalized; // 2D vector prependicular to the dist vector .
    float force = Mathf.Sqrt (G * ((mBody + mPlanet) / r)); // Calculate the velocity .
    rigidbody2D.velocity =  tdist * force;


}

circularOrbit函数称为FixedUpdate内的每个帧,统一提供物理脚本。

下面是一个小的gif,足以解释我的问题: http : //makeagif.com/i/-JxBG8

这里还有一些关于我的设置的信息:

  • 怪物质量是1个单位,行星质量是5个单位。
  • 怪物的重力是关闭的。
  • G的值为1(我已经测试了许多值而没有解决问题)
  • 最后,我知道我不是第一个这样做,但本周我已经搜索了很多关于如何做到这一点的内容,主要是我的代码是Box2D端口,并进行了一些调整和修改, 我发布了一个问题GameDev.net在这里,但任何建议工作。

    请帮助我解释为什么它不是物理初学者的工作方式,我一整周都陷在这个事情中。


    (x,y)的垂直向量是(y,-x)的倍数,但是你有(x,-y)。 (1,-2)= -3,可以检查两个向量是垂直的,因为它们的点乘积x1*x2 + y1*y2是0。 (1,2)。(2,-1)= 2-2 = 0。

    顺便说一下,我不推荐混合力和速度。 我会重命名你现在所说的强制加速。

    链接地址: http://www.djcxy.com/p/66171.html

    上一篇: Circular orbit formula is not working in unity 3D

    下一篇: How would you go about applying force to an object?