我怎样才能旋转一个对象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);
..但不工作。
如果要将对象旋转到某个角度,则使用 setTransform 方法,例如
b2body->SetTransform( playerBody_->GetPosition(), angleInRadian );
如果您想连续旋转身体,请使用 SetAngularVelocity 方法,例如
b2body->SetAngularVelocity(<float32>)
请记住 b2body 对象必须是动态的或运动学的才能旋转。
首先,对象必须是动态的或运动学的才能旋转,此外还用于SetAngularVelocity()
实现旋转。
使用世界中心代替位置,像这样
private static final double DEGREES_TO_RADIANS = (double)(Math.PI/180);
float angle = (float) (45*DEGREES_TO_RADIANS);
object.body.setTransform(object.body.getWorldCenter(), angle);
我认为您可以使用武力或冲动,而不是直接使用 setTransform 方法。例子:
body->ApplyForce( b2Vec2(force,0), body->GetWorldPoint( b2Vec2(1,1) ) );
这段代码让身体死记硬背。
这个想法是旋转到一个角度,我自己找到的最简单的方法是使用:
float rotation = MathUtils.PI; // target rotation
float c = 1; //speed of rotation
float q = rotation-groundBody.getAngle();
groundBody.setAngularVelocity(c*q);
身体在开始时旋转得更快,在结束时旋转得更慢,但您可以使用插值功能来实现所需的旋转速度。