【问题标题】:Removing Tiles in Libgdx (java) [duplicate]在 Libgdx(java)中删除磁贴 [重复]
【发布时间】:2017-06-21 16:05:30
【问题描述】:

美好的一天!

我需要有关 Libgdx 项目的帮助。 我想要的是删除一个图块,它位于我的图形层(第 0 层)中。

这是我目前得到的:

if(object1.getUserData() != null && object1.getUserData() == "polyblock"){
       polyblock1 = true;
       System.out.println("PLAYER 1");
}else if(object1.getUserData() != null && object1.getUserData() == "redcoin" || object1.getUserData() == "greencoin" ||  object1.getUserData() == "bluecoin" ){
           B2dObjectGetter.getCell(object1.getUserData() == "redcoin" ? 3 : object1.getUserData() == "greencoin" ? 4: 5).setTile(null);
      }

硬币体和 getCells 方法:

for (int i = 3; i <= 5; i++){
     for (MapObject obj : map.getLayers().get(i).getObjects().getByType(EllipseMapObject.class)) {
            Ellipse ellipse = ((EllipseMapObject) obj).getEllipse();

            bdef.type = BodyDef.BodyType.StaticBody;
            bdef.position.set((ellipse.x + ellipse.width / 2) / GameJLibGDX.PPM, (ellipse.y + ellipse.height / 2) / GameJLibGDX.PPM);

            CircleShape shape = new CircleShape();

            coinbodies[i] = world.createBody(bdef);
            shape.setRadius(ellipse.width / 2 / GameJLibGDX.PPM);
            fixdef.shape = shape;
            coinbodies[i].createFixture(fixdef).setUserData(i == 3 ? "redcoin" : i == 4 ? "greencoin" : "bluecoin");
        }
    }

}

public static TiledMapTileLayer.Cell getCell(int i){
    TiledMapTileLayer layer = (TiledMapTileLayer) map.getLayers().get(0);
    System.out.println(coinbodies[i].getFixtureList());
    return layer.getCell((int)(coinbodies[i].getPosition().x * GameJLibGDX.PPM / 128),(int)(coinbodies[i].getPosition().y*GameJLibGDX.PPM / 128));
}

除了一件事之外,它似乎工作得很好:

蓝色硬币被击中:

The tiles of the other two coins move instead of disappearing like the blue one

绿色硬币被击中:

The green coin is this appearing but the red coin tile still switches

红币被击中: 不能发布超过两张图片:(。 红币正在消失,一切都很好。但前提是我一个接一个地打他们。所以我的意思是按顺序:Redcoin,Greencoin,Bluecoin

我注意到一些非常奇怪的事情:

As normal i hit it and it moved so its still bugged

但是:

When i move to the right in the Moment the Picture would go outside the Screen, because the camera Position is attached to the Player, the coin moves back to its right position

感谢您的宝贵时间!

【问题讨论】:

    标签: java libgdx tile


    【解决方案1】:

    很难从中诊断出确切的问题,但对我来说最突出的是您使用 == 运算符进行字符串比较。

    如果您想测试两个字符串(或 Java 中的任何 Object 类型)是否相等,您应该使用 String.equals 方法,如下所示:

    object1.getUserData().equals("my string")
    

    equals 方法检查对象的值是否相同。 == 运算符检查对对象的引用是否相同,并且在与字符串文字进行比较时具有不可预测的行为。

    【讨论】:

    • 如果我使用 .equals 我得到一个 Nullpointerexception。
    • @Jakob 你能指出你在哪里得到 NPE,你已经使用了 NPE 的标志。
    • 未能使用“yoda”风格并执行"mystring".equals(object...) 抱歉,回复晚了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多