我正在尝试对我一直在做的测试游戏实施一些碰撞检测。
我已经使用TiledMap创建地图,并将其中一个图块的属性设置为blocked = true
然后在第0层上绘制此图块。

然后,我使用以下代码检查图块是否存在于玩家移动的方向上

if (input.isKeyDown(Input.KEY_DOWN)) {
    sprite = down;
    sprite.update(delta);
    int tileID = map.map.getTileId((int) x / map.map.getTileWidth(), (int) y / map.map.getTileHeight() + 1, 0);
    String value = map.map.getTileProperty(tileID, "blocked", "false");
    if (value.equals("true")) {
        y += delta * 0.1f;
        System.out.println("Tile ID: " + (int) (x / map.map.getTileWidth()) + ", " + (int) (y / map.map.getTileHeight() + 1) + " Try to walk down. Tile value below the player is:" + value);
    }

}


对每个方向都重复此步骤。

我遇到的问题是它正在拾取不正确的瓷砖的被阻止的属性
您可以通过this video更好地理解。黄色图块是碰撞/阻塞图块。

最佳答案

我认为您遇到了这个问题,因为您在if语句之外更新了图形

尝试将以下内容移至if内:

sprite = down;
sprite.update(delta);


但是我想其中之一放下了精灵的面,因此不应该放在里面。

关于java - Slick2D:getTileProperty不应返回true,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23267782/

10-11 01:11