我在使用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()));


会是什么呢?非常感谢!

最佳答案

我认为问题在于这条线

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


注释此行并运行程序。

关于java - Jbox2D- body 随机移动,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18581969/

10-12 01:50