如何使用浮点数从libGDX中的单元格获取图块的位置?

时间:2017-10-28 18:06:54

标签: java libgdx box2d tiled

我正在制作游戏。这是一款基于2D平铺的游戏。我试图让它成为当你踩水时你的球员速度和尺寸的变化。

我每隔60秒运行一次:

if(map.getTileTypeByCoordinate(0, player.sprite.getX()/4.0f, player.sprite.getY()/4.0f) == TileType.WATER){
    player.sprite.setScale(2, 1.75f);
    player.speed = 3;
} else {
    player.sprite.setScale(2, 2);
    player.speed = 5;
}

map.getTileTypeByCoordinate(int layer, float x, float y);方法如下:

public TileType getTileTypeByCoordinate(int layer, float col, float row) {
    Cell cell = ((TiledMapTileLayer) tiledMap.getLayers().get(layer)).getCell((int)(col), (int)(row));

    if(cell != null){
        TiledMapTile tile = cell.getTile();

        if(tile != null){
            int id = tile.getId();
            return TileType.getTileTypeById(id);
        }
    }

    return TileType.GRASS;
}

如果我没有将col和row转换为整数,那么显然我会收到错误。

这是一个问题的原因是因为我使用Box2D来检查碰撞。我按比例(10.0f)划分所有内容,以便物理模拟更准确,我可以让玩家更快地移动。

我想知道是否有办法从浮动位置而不是int位置获取切片。我是否必须停止使用Box2D进行碰撞检测?我对此很好,但是我对自己的碰撞检测编程没有任何帮助,所以如果是这样的话,我将如何制作自己的碰撞?

1 个答案:

答案 0 :(得分:1)

如果您使用刻度来使用Box2D,那么您需要重新调整坐标。

如果你的精灵是像素100那么它的box2d坐标是10米。 Tiled想要以像素为单位的坐标,所以只需乘以你的比例。

random

当然可能会有一些规模的演员。

如果您有任何其他问题,希望这有帮助和评论!