5

でオブジェクトを回転するにはどうすればよい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);

..しかし、機能していません。

4

5 に答える 5

2

オブジェクトをある角度に回転させたい場合は、 setTransform メソッドを次のように使用します

b2body->SetTransform( playerBody_->GetPosition(), angleInRadian );

体を連続的に回転させたい場合は、次のように SetAngularVelocity メソッドを使用します

b2body->SetAngularVelocity(<float32>)

回転できるようにするには、b2body オブジェクトが動的またはキネマティックである必要があることに注意してください。

于 2014-03-12T11:18:35.207 に答える
2

まず、オブジェクトは、回転できるようにするために動的またはキネマティックSetAngularVelocity()である必要があり、さらに回転を実現するために使用する必要があります。

于 2011-06-07T16:49:02.807 に答える
1

このように、位置の代わりに世界の中心を使用します

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);
于 2011-02-04T13:04:39.160 に答える
1

setTransform メソッドを直接使用するのではなく、力またはインパルスを使用できると思います。例:

body->ApplyForce( b2Vec2(force,0), body->GetWorldPoint( b2Vec2(1,1) ) );

このコードは体を回転させます。

于 2012-06-18T09:40:18.407 に答える
-1

アイデアは、角度を付けて回転させることです。私が自分で見つけた最も簡単な方法は、次を使用することです。

float rotation = MathUtils.PI; // target rotation

float c = 1; //speed of rotation
float q = rotation-groundBody.getAngle();
groundBody.setAngularVelocity(c*q);

本体は最初は速く回転し、最後は遅く回転しますが、補間機能を使用して希望の回転速度を実現できます。

于 2016-12-01T18:20:23.980 に答える