【问题标题】:Creating a isomatricStagged Map with libGDX使用 libGDX 创建等轴测图
【发布时间】:2017-05-05 07:58:06
【问题描述】:

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

即使遇到了一些相机问题,我也已经实现了地图、渲染并使用了摄像头。

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

感谢粗略的概述或获取这些信息的一些链接。 =)

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

【问题讨论】:

  • 如果您在gamedev.stackexchange.com 上提出游戏相关问题,您可能会得到更好的服务:)
  • 谢谢德布先生。我会转发到这个论坛。 =)

标签: java libgdx box2d


【解决方案1】:

不确定你想用 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 引用特定纹理而不是纹理。

【讨论】:

  • 这是使用数组的好方法。我还没有考虑过,今天我将尝试将它与我当前的版本进行比较。 =)关于box 2D,我不能很好地评估我应该使用哪个模块/类来获得最佳解决方案。也许 2D 盒子已经过时,或者其他东西应该更好地创建一个等距世界。此外,我想弄清楚使用等距交错地图,但相机位置仍然存在问题。这就是为什么我认为做某事是错误的,应该使用比 isometricCamera、isomatricRenderignMap、Rendere 和 Batch 更多的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多