MarioBros libgdx游戏中使用磁贴的空指针异常

时间:2017-03-23 13:16:21

标签: java nullpointerexception null libgdx tiles

我正在按照有关如何在libgdx制作MarioBros的指南,您可以在YouTube的CodeSchool频道找到它。
不幸的是,我被困在第13课时,当Mario的头碰撞时它移除了包含砖的单元格的瓷砖,你可以在这个youtube link上观看它,分钟为9'00“。 /> 当我输入getClass().setTile(null)时,我得到一个NullPointerException 我试图以各种方式修复它,但仍然没有结果。

public class Brick extends InteractiveTileObject
{
    public Brick(World world, TiledMap map, Rectangle bounds)
    {
        super(world, map, bounds);
        fixture.setUserData(this);
        setCategoryFilter(MyGdxGame.BRICK_BIT);
    }

    @Override
    public void onHeadHit() 
    {
        Gdx.app.log("Brick", "Collision");
        setCategoryFilter(MyGdxGame.DESTROYED_BIT);
        getCell().setTile(null);   //!!!!!!!
    }
}

这是堆栈跟踪:

  

线程“LWJGL Application”中的异常java.lang.NullPointerException   在com.mygdx.game.Sprites.Brick.onHeadHit(Brick.java:29)at   com.mygdx.game.Tools.WorldContactListener.beginContact(世界ContactListener.java:32)   在com.badlogic.gdx.physics.box2d.World.beginContact(World.java:985)   在com.badlogic.gdx.physics.box2d.World.jniStep(Native Method)at at   com.badlogic.gdx.physics.box2d.World.step(World.java:689)at at   com.mygdx.game.Screens.PlayScreen.update(PlayScreen.java:102)at at   com.mygdx.game.Screens.PlayScreen.render

我试图只调用getCell()并且它可以工作,但应该消失的砖块留在那里......所以我需要在getCell方法上调用setTile(null),但是当我尝试它时抛出一个NPE。

这是getCell()方法:

public TiledMapTileLayer.Cell getCell()
{
    TiledMapTileLayer layer = (TiledMapTileLayer) map.getLayers().get(1);
    return layer.getCell((int) (body.getPosition().x * MyGdxGame.PPM / 16), (int) (body.getPosition().y * MyGdxGame.PPM / 16)); 
}

我该如何解决这个问题?

0 个答案:

没有答案