0

jbox2d に少し問題があります。

メソッド world.step が呼び出されるとすぐに、ダイナミック ボディが元の位置から移動します。他のすべて (静的ボディの位置と動的ボディの動き) を印刷しようとしましたが、正しいです。

重力 (これは必要ありません) に関係していると思いましたが、ワールドとダイナミック ボディを 0.0f に設定した後も、同じ問題が発生します。

どうなり得るか?

コード:

レベル (コンストラクター)

world = new World(new Vec2(0,10.0f));

レベル(更新方法)

world.step(1/60.0f, 8, 3);

動的エンティティ (コンストラクター)

physicsX = x / Map.METER_IN_PIXELS;
physicsY = y / Map.METER_IN_PIXELS;
initPhysicalBody(world);

初期化方法:

public void initPhysicalBody(World world)
{
    BodyDef bd = new BodyDef();
    bd.type = BodyType.DYNAMIC;
    bd.position.set(physicsX, physicsY);
    bd.gravityScale = 0;
    PolygonShape ps = new PolygonShape();
    ps.setAsBox(getFrameSize().width(), getFrameSize().height());
    FixtureDef fd = new FixtureDef();
    fd.density = 1;
    fd.shape = ps;
    body = world.createBody(bd);
    body.createFixture(fd);
    System.out.println(body.getPosition());
}

更新方法

body.setLinearVelocity(new Vec2(getLastDirection().getX() * getSpeed(), 
    getLastDirection().getY() * getSpeed()));

どうなり得るか?どうもありがとう!

4

2 に答える 2

1

問題はこの行にあると思います

body.setLinearVelocity(new Vec2(getLastDirection().getX() * getSpeed(), 
getLastDirection().getY() * getSpeed()));

この行にコメントを付けて、プログラムを実行してください。

于 2013-09-03T06:10:35.500 に答える
0

重力がまったく必要ない場合は@Epi。その後、あなたはすることができます

world = new World(new Vec2(0,0));

あなたのソリューションによれば、体の重力スケールを0に設定しました。これは間違いなく正常に機能します。

更新方法では、重力とはまったく関係のない体の線速度を設定していると思います。

したがって、 world.step(---) を呼び出すと、体の速度が設定され、インスタンスで体が消えます。

だから私はあなたの価値が何のために来ているかをデバッグするべきだと思います

(new Vec2(getLastDirection().getX() * getSpeed(), getLastDirection().getY() * getSpeed())

あなたの問題全体はこの行にのみあります..それで遊ぶことで問題が解決します.

于 2013-09-03T06:28:57.937 に答える