有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Jbox2D实体随机移动

我对jbox2d有点小问题

只要方法世界。这一步称为“我的动态身体移出原始位置”。 我试着打印其他的东西(静态物体的位置和动态物体的运动),这是正确的

我认为它与重力有关(我不需要重力),但在我将世界和动态物体设置为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()));

可能是什么?非常感谢


共 (2) 个答案

  1. # 1 楼答案

    @Epi如果你根本不需要重力。那你就可以做了

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

    bt根据您的解决方案,您已将身体的重力比例设置为0,这肯定会正常工作

    我认为在更新方法中,你设置了物体的线速度,这与重力无关

    所以当你呼唤世界。步骤(-)设置身体的速度,你的身体在一个实例中释放

    所以我认为你应该调试你的价值观

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

    你的全部问题只在于这一行。。玩它会解决你的问题

  2. # 2 楼答案

    我认为问题在于这方面

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

    注释这一行并运行您的程序