Java libGDX字符空指针
我是一个编程初学者,我正在使用libGDX制作一个RPG。我设置了一些东西,出于某种原因,当我进入应该显示主要角色的屏幕时,我得到以下错误:Java libGDX字符空指针,java,libgdx,Java,Libgdx,我是一个编程初学者,我正在使用libGDX制作一个RPG。我设置了一些东西,出于某种原因,当我进入应该显示主要角色的屏幕时,我得到以下错误: Exception in thread "LWJGL Application" java.lang.NullPointerException at FirstRPG.AbstractEntity.setLinearVelocity(AbstractEntity.java:220) at FirstRPG.screens.Player.han
Exception in thread "LWJGL Application" java.lang.NullPointerException
at FirstRPG.AbstractEntity.setLinearVelocity(AbstractEntity.java:220)
at FirstRPG.screens.Player.handleEvents(Player.java:138)
at FirstRPG.screens.Player.draw(Player.java:193)
at FirstRPG.screens.GameScreen.render(GameScreen.java:16)
at com.badlogic.gdx.Game.render(Game.java:46)
at FirstRPG.screens.FirstRPG.render(FirstRPG.java:20)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:207)
at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
我设置了一个抽象类来组合scence2d和box2d,错误在于setLinearVelocity方法:
public void setLinearVelocity(Vector2 v) {
body.setLinearVelocity(v);
}
在我为玩家在类中设置的事件处理程序中使用:
public void handleEvents() {
this.move = Movement.IDLE;
if ((Gdx.input.isKeyPressed(Input.Keys.UP)) || (Gdx.input.isKeyPressed(Input.Keys.W))) {
setLinearVelocity(0.0f, 5.0f);
this.setY(this.getPosition().y * PIXELS_PER_METER);
this.dir = Direction.UP;
this.move = Movement.WALKING;
} else if ((Gdx.input.isKeyPressed(Input.Keys.DOWN)) || (Gdx.input.isKeyPressed(Input.Keys.S))) {
setLinearVelocity(0.0f, -5.0f);
this.setY(this.getPosition().y * PIXELS_PER_METER);
this.dir = Direction.DOWN;
this.move = Movement.WALKING;
} else if ((Gdx.input.isKeyPressed(Input.Keys.LEFT)) || (Gdx.input.isKeyPressed(Input.Keys.A))) {
setLinearVelocity(-5.0f, 0.0f);
this.setX(this.getPosition().x * PIXELS_PER_METER);
this.dir = Direction.LEFT;
this.move = Movement.WALKING;
} else if ((Gdx.input.isKeyPressed(Input.Keys.RIGHT)) || (Gdx.input.isKeyPressed(Input.Keys.D))) {
setLinearVelocity(5.0f, 0.0f);
this.setX(this.getPosition().x * PIXELS_PER_METER);
this.dir = Direction.RIGHT;
this.move = Movement.WALKING;
} else {
setLinearVelocity(0.0f, 0.0f);
this.setX(this.getPosition().x * PIXELS_PER_METER);
this.setY(this.getPosition().y * PIXELS_PER_METER);
this.move = Movement.IDLE;
}
}
我以前使用过这种方法来生成字符,我不明白为什么它会给我一个NullPointerException它不应该设置为linearvelocitynew Vector20.0f,5.0f
否则,从您的代码来看,它看起来就像是在传递两个浮点而不是一个向量。FirstRPG.AbstractEntity中的body为null。这是显而易见的,在这种情况下,您甚至不需要调试就可以找到它。请阅读Java教程以了解什么是NullPointerException,因为这些通常是最容易修复的。因为您向我们展示的代码没有显示初始化主体的部分,所以我们现在无法再帮助您。