Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java libGDX字符空指针_Java_Libgdx - Fatal编程技术网

Java libGDX字符空指针

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

我是一个编程初学者,我正在使用libGDX制作一个RPG。我设置了一些东西,出于某种原因,当我进入应该显示主要角色的屏幕时,我得到以下错误:

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,因为这些通常是最容易修复的。因为您向我们展示的代码没有显示初始化主体的部分,所以我们现在无法再帮助您。