Java libGDX-我的Box2D身体不跳

Java libGDX-我的Box2D身体不跳,java,libgdx,game-engine,Java,Libgdx,Game Engine,我正在尝试用java游戏引擎libGDX制作一个小游戏。我已经得到了球员,但他不能跳,我不知道为什么 这是我的GameScreen类: public class GameScreen extends ScreenManager{ //For the view of the game and the rendering private SpriteBatch batch; private OrthographicCamera cam; //DEBUG pr

我正在尝试用java游戏引擎libGDX制作一个小游戏。我已经得到了球员,但他不能跳,我不知道为什么

这是我的GameScreen类:

public class GameScreen extends ScreenManager{
    //For the view of the game and the rendering
    private SpriteBatch batch;
    private OrthographicCamera cam;

    //DEBUG
    private Box2DDebugRenderer b2dr;

    //World, Player and so on
    private GameWorld world;
    private Player player;
    private Ground ground;


    public static float w, h;

    public GameScreen(Game game) {
        super(game);
        //vars
        w = Gdx.graphics.getWidth();
        h = Gdx.graphics.getHeight();

        //view and rendering
        batch = new SpriteBatch();
        cam = new OrthographicCamera();
        cam.setToOrtho(false, w/2, h/2);

        //debug
        b2dr = new Box2DDebugRenderer();

        //world, bodies ...
        player = new Player(world);
        ground = new Ground(world);

    }

    @Override
    public void pause() {


    }

    @Override
    public void show() {


    }

    @Override
    public void render(float delta) {
        //clearing the screen
        Gdx.gl.glClearColor(0, 0, 0, 0);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        //updating
        update(Gdx.graphics.getDeltaTime());

        //render
        batch.setProjectionMatrix(cam.combined);

        //debug
        b2dr.render(world.getWorld(), cam.combined);    


    }

    @Override
    public void resize(int width, int height) {


    }

    @Override
    public void hide() {


    }


    @Override
    public void dispose() {


    }

    @Override
    public void onKlick(float delta) {


    }

    public void update(float delta){
        world.update(delta);
        player.keyInput();
        System.out.println(player.getBody().getPosition().x);
        System.out.println(player.getBody().getPosition().y);
    }



}
这是我的球员课程:

public class Player {
    public static Body body;
    public static BodyDef def;
    private FixtureDef fd;

    //set form
    private PolygonShape shape;

    private GameScreen gs;

    public Player(GameWorld world){
        def = new BodyDef();
        def.fixedRotation = true;
        def.position.set(gs.w / 4, gs.h / 4);
        def.type = BodyType.DynamicBody;

        body = world.getWorld().createBody(def);

        shape = new PolygonShape();
        shape.setAsBox(32 / 2, 32 / 2);

        fd = new FixtureDef();
        fd.shape = shape;
        fd.density = 30;

        body.createFixture(fd);
        shape.dispose();
    }

    public static Body getBody() {
        return body;
    }

    public static BodyDef getDef() {
        return def;
    }

    public static void keyInput(){
        if(Gdx.input.isKeyPressed(Input.Keys.UP)){
            body.applyForceToCenter(0, 900, false);
            System.out.println("PRESSED");
        }
    }



}
这就是我的游戏世界课程:

public class GameWorld {
    public static World world;

    public GameWorld(){
        world = new World(new Vector2(0f, -10f), false);

    }

    public void update(float delta){
        world.step(1 / 60f, 5, 2);
        System.out.println("WorldUPDATE");
    }

    public static World getWorld() {
        return world;
    }



}

我不知道为什么身体不能跳,如果你能的话请帮帮我(:提前谢谢你。

力每一步都推动身体,而重力又把它推回地面。有一个功能,在重力干扰之前,用它所有的“力”一次推它


当你使用身体时,身体应该向上推,但与冲动相比,这是一个非常缓慢的过程。

好的,非常感谢你的回答。你能给我一个例子吗?是的,非常有效!非常感谢,但现在一切看起来都非常缓慢。你知道如何解决这个问题吗?这是因为你没有缩放你的播放器大小,所以Box2d认为它是正确的g比你看到的要大得多(米而不是像素)