InputProcessor NullPointerException

时间:2016-09-20 21:40:54

标签: libgdx

我正在开发游戏,使用LibGDX并且输入处理器存在一些问题。我启动我的游戏并按下右键,它会与NullPointerExeption崩溃

@Override
public boolean keyDown(int keycode) {
    if (keycode == Input.Keys.RIGHT && player.b2body.getLinearVelocity().x <=0.5) {
        player.b2body.applyLinearImpulse(new Vector2(0.1f, 0), player.b2body.getWorldCenter(),true);
        return true;
    }
    return false;
}



public  void update (float dt) {


        world.step(1/10f,6,2);
        player.update(dt);
       // handleInput(dt);

        MyInputProcessor inputProcessor = new MyInputProcessor();
        Gdx.input.setInputProcessor(inputProcessor);
        if(player.b2body.getPosition().x>=SonicZP.V_WIDTH/2/SonicZP.PPM)
        gamecam.position.x = player.b2body.getPosition().x;

        if(player.b2body.getPosition().y>=SonicZP.V_HEIGHT/2/SonicZP.PPM)
            gamecam.position.y = player.b2body.getPosition().y;
        gamecam.update();



            renderer.setView(gamecam);
    }

2 个答案:

答案 0 :(得分:1)

MyInputProcessor inputProcessor = new MyInputProcessor();
Gdx.input.setInputProcessor(inputProcessor);

应放在您的show() - Game类中扩展Screen的方法。

答案 1 :(得分:0)

看起来你的类扩展了Screen并实现了InputProcessor。

你应该删除

MyInputProcessor inputProcessor = new MyInputProcessor();
Gdx.input.setInputProcessor(inputProcessor);
从你的render()中获取

。顺便说一句,这绝不应该在render()中。 取而代之的是你的show()集:

Gdx.input.setInputProcessor(this);

因为你所在的类实现了InputProcessor而且是你的InputProcessor。