【发布时间】:2016-05-26 22:45:32
【问题描述】:
我在 MonoGame 中使用 Farseer Physics 库。
在我的游戏中,我使用了由BodyFactory.CreateCompoundPolygon(...); 创建的复合多边形体,但它们有问题。
它们的原点在左上角,而不是像大多数 Box2d 对象一样的质心。由于我需要围绕与左上角不同的枢轴点旋转身体,我发现我可以改变身体的质心(Body.LocalCenter)。这很好用,而且我可以使用Body.ApplyAngularImpulse(...); 或更改Body.AngularVelocity 来旋转身体,但问题来了:
使用我之前提到的方法改变身体的旋转效果很好,使用的枢轴点是质心,但是如果我尝试通过直接改变身体的旋转来旋转身体(Body.Rotation),它会旋转围绕左上角而不是重心。
所以实际上,Body.Rotation += 1; 围绕不同的枢轴点旋转,而不是 Body.AngularVelocity = 1;
您可能想知道为什么这是一个问题,为什么我不只是使用我之前提到的方法来旋转身体。问题是我需要能够检查身体的当前旋转。我想不出办法来做到这一点。我不能使用Body.Rotation,因为它会返回围绕错误点的旋转。
TL;DR: Body.Rotation 不会返回围绕质心的旋转,如何解决这个问题?
【问题讨论】:
标签: c# xna box2d monogame farseer