这是我试图正常工作的代码。当我的角色与特定对象发生碰撞时,应该运行。磁贴获得新属性,但在渲染过程中不会更改。我的目标是给他们新的属性并渲染新的瓷砖。
collisionLayer = (TiledMapTileLayer) map.getLayers().get(0);
for(int x = 0; x < collisionLayer.getWidth();x++){
for(int y = 0; y < collisionLayer.getHeight();y++){
cell = collisionLayer.getCell(x,y);
if(cell.getTile().getProperties().containsKey("hiddenwall")) {
cell.setTile(map.getTileSets().getTile(2));
}
}
}
这是有效的旧代码。在碰撞时,它将从玩家位置获得瓦片,并且在与碰撞瓦片碰撞时,它将使瓦片达到新的块类型并进行设置。下面的代码正常工作和显示。上面的代码没有。任何人都知道为什么?
Cell cell = collisionLayer.getCell(
(int) ((getX()) / (collisionLayer.getTileWidth() )),
(int) ((getY())/ (collisionLayer.getTileHeight() )));
cell.setTile(map.getTileSets().getTile(2));
答案 0 :(得分:0)
事实证明我在错误的地方运行我的方法。我需要在我的程序的render方法中运行它。虽然它确实在其他地方有效。 (在我的碰撞检测中)在瓷砖上有一个瓷砖。检查地图上的每个图块都不适用于所有其他机制。一旦我在渲染方法中运行代码,它每次都像一个魅力。