Slick2D:getTileProperty在不应该返回时返回true

时间:2014-04-24 11:36:11

标签: java collision-detection slick2d

我正在尝试对我一直在制作的测试游戏实施一些碰撞检测。 我已经使用TiledMap来创建地图并在其中一个tile上设置一个属性为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更好地理解。黄色瓷砖是碰撞/阻挡的瓷砖。

1 个答案:

答案 0 :(得分:-1)

我认为您遇到此问题是因为您更新了if声明

之外的图形

尝试在if

中移动下面的内容
sprite = down; 
sprite.update(delta);

但是我想其中一个将精灵的面朝下,因此不应该在里面。