Box2D如何旋转一个物体?
如何在 Box2D 中旋转对象?尝试过
private static final double DEGREES_TO_RADIANS = (double)(Math.PI/180);
float angle = (float) (45*DEGREES_TO_RADIANS);
object.body.setTransform(object.body.getPosition(), angle);
...但不起作用。
How I can rotate an object in Box2D
? Tried..
private static final double DEGREES_TO_RADIANS = (double)(Math.PI/180);
float angle = (float) (45*DEGREES_TO_RADIANS);
object.body.setTransform(object.body.getPosition(), angle);
..but not working.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
首先,对象必须是动态或运动才能旋转,
另外使用
SetAngularVelocity()
来实现旋转。Firstly the object must be a dynamic or kinematic to be able to be rotated,
in addition use
SetAngularVelocity()
to achieve the rotation.如果你想将对象旋转到某个角度,那么你可以使用 setTransform 方法,如
b2body->SetTransform(playerBody_->GetPosition(), angleInRadian );
如果你想连续旋转主体,那么使用 SetAngularVelocity 方法,如
b2body->SetAngularVelocity()
记住 b2body 对象必须是动态或运动学的才能旋转。
If you want to rotate the object to an angle then you use setTransform method like
b2body->SetTransform( playerBody_->GetPosition(), angleInRadian );
And if you want to rotate the body continuously then use SetAngularVelocity method like
b2body->SetAngularVelocity(<float32>)
Remember b2body object must be a dynamic or kinematic to be able to be rotated.
使用世界中心代替位置,就像这样
use the world center instead position, like this
我认为你可以使用力或脉冲,而不是直接使用 setTransform 方法。
示例:
这段代码让正文死记硬背。
I think you can use force or impulses,not use setTransform methord directly.
example:
this code let body rote.
这个想法是旋转到一个角度,我自己发现的最简单的方法是使用:
身体在开始时旋转得更快,在结束时旋转得更慢,但你可以使用插值功能来达到所需的旋转速度。
The idea is to rotate to an angle, the easiest method I found by myself is to use:
the body will rotate quicker at the beginning and slower at the end but you can use Interpolation function to achieve desired speed of rotation.