如何在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);
但是没有起作用。
如何在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);
但是没有起作用。
SetAngularVelocity()
方法来实现旋转。如果您想将对象旋转到某个角度,则可以使用setTransform方法,例如:
b2body->SetTransform(playerBody_->GetPosition(), angleInRadian);
如果您想让物体持续旋转,则可以使用SetAngularVelocity方法,例如:
b2body->SetAngularVelocity(<float32>)
请记住,b2body对象必须是动态或运动学才能被旋转。
使用世界中心而不是位置,像这样
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);
身体在开始时会更快地旋转,最后会变慢,但您可以使用插值函数来实现所需的旋转速度。