我正在制作游戏。这是一款基于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进行碰撞检测?我对此很好,但是我对自己的碰撞检测编程没有任何帮助,所以如果是这样的话,我将如何制作自己的碰撞?
答案 0 :(得分:1)
如果您使用刻度来使用Box2D,那么您需要重新调整坐标。
如果你的精灵是像素100那么它的box2d坐标是10米。 Tiled想要以像素为单位的坐标,所以只需乘以你的比例。
random
当然可能会有一些规模的演员。
如果您有任何其他问题,希望这有帮助和评论!