我正在开发游戏,使用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);
}
答案 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。