使用libGDX创建isomatricStagged Map

时间:2017-05-05 07:58:07

标签: java libgdx box2d

我正在学习用libgdx创建一个简单的游戏并且已经取得了一些成功。 现在,我想知道用于创建简单的isomatricStagged世界的最佳方法。

即使我遇到一些相机问题,我已经实现了地图,渲染并使用了一个凸轮。

我想知道的是,我应该使用Box2d并包含我的地图以获得界限吗?或者我应该只为地图渲染一个二维数组(使用超过100x100的瓷砖后,这个数字真的很慢)。

thabnks用于粗略概述或获取这些信息的一些链接。 =)

也在https://gamedev.stackexchange.com/questions/140750/creating-a-isomatricstagged-map-with-libgdx打开了

1 个答案:

答案 0 :(得分:0)

不确定你想用盒子2D做什么,但是对于100x100的瓷砖来说阵列不应该很慢,但除非你的循环将绘制成千上万的屏幕外资产,否则你只需要绘制所需的东西。为交错的地图计算这个非常简单:

Tiles X position in 2D array = worldX / tileWidth;
Tiles Y position in 2D array = worldY / (TileHeight / 2); // Since they overlap half on y axis.

因此,如果worldX / worldY位于相机的左下角或中心,则可以更改绘制循环以仅绘制屏幕上的内容。您可以计算左上角和右下角的图块,然后迭代。

Gridpoint topLeft; //Calculate based on camera position.
Gridpoint bottomRight; //Calculate based on camera position.

for (int y = bottomRight.y; y <= topLeft.y; y++)
{
  for (int x = topLeft.x; x <= bottomRight.x; x++)
  {
    drawTile[x,y];
  }
}

现在你可以拥有1024x1024的地图而不会有麻烦。但是,由于存储了大型地图数组,因此确实需要大量内存。这就是为什么你应该只在Tile对象中保留必要的数据,而不是引用特定纹理的纹理int