【问题标题】:How do I remove an object from tiled?如何从平铺中删除对象?
【发布时间】:2019-08-30 19:53:45
【问题描述】:

假设我在 Tiled 的对象层中放置了一个对象。编写代码时应该如何将这些对象彼此分开? (示例:我们与硬币的主体相撞,不再需要主体)

【问题讨论】:

    标签: libgdx tiled


    【解决方案1】:

    对于平铺层,只需将单元格设置为空。

       //Rectangle tmp = new Rectangle();
       if (colideTileLayer.getCell(ix, iy) != null) {
          tmp.set(ix * tileWidth, iy * tileHeight, tileWidth, tileHeight);
          if (tmp.overlaps(rectangle)) {
            colideTileLayer.setCell(ix, iy, null); //THIS IS LINE
            GameManager.INSTANCE.incResult();
            result = true;
          }
        }
    

    如果您的障碍物在对象层中定义并在图块层中以可视方式表示,则根据对象位置重新计算需要擦除的图块。

    比起从对象层移除一个对象,使用remove方法。

    //MapObjects objects = layer.getObjects(); //you read if from object layer
    //MapObject object = getColidedObject(); //you need to know what to remove 
    objects.remove(object); //remove
    

    【讨论】:

    • 每当我使用 objects.remove(object) 时,它似乎并没有删除对象,不知道为什么会发生这种情况。我不是要从切片图层中删除切片,而是要从对象图层中删除整个对象。
    • 试试你的对象是否存在(之前和之后)在这个层(使用getIndex方法)。 \n /** 获取集合中对象的索引,如果不存在这样的对象,则返回 -1。 */ public int getIndex (MapObject object) { return objects.indexOf(object, true); }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-12
    • 1970-01-01
    • 2023-01-16
    相关资源
    最近更新 更多