【问题标题】:Isometric graphics Java等距图形 Java
【发布时间】:2012-05-14 22:08:57
【问题描述】:

在绘制 2D 图形时,如何处理帧中图片的深度?例如,地面深度为 -1,玩家深度为 0?

还有一个问题,我如何实现这种外观?当我说实现时,我的意思只是理论上的实现方式,而不是实际的源代码,但源代码可以提供帮助。

我的游戏已经是基于 Tile 的,它已经准备好以等距绘制。我在游戏的引擎部分有 x y 和 z 坐标。我读到您只需要将其翻译成 x 和 y 以进行等距绘图,但我不知道如何或为什么要这样做。

这是我现在的游戏图片。硬币是玩家,方块是棋子。

我的 Tiles 存储在数组中的最后一件事,即 Tile[] tileList。这是一种有效的存储方式吗?因为我想要从我的游戏中获得最好的表现。

非常感谢。

【问题讨论】:

  • 深度是通过先绘制地砖然后绘制角色来实现的(目前)。您将制作平铺图像,使其一开始是等距的,例如these tiles。最后,对于屏幕上的 1 行 iso 磁贴,它拥有 x + y == row(在 1 种可能的表示中);所以第 3 行 (row == 2) 将有瓷砖 (2,0)(1,1)(0,2)
  • 数组非常节省内存。 Java 显然不擅长在其中进行查找,但据我所知,数组的每个替代方案(如 ArrayList)都是一个或多个数组的精美封装。这实际上取决于您的 Tile 类拥有哪些数据来说明是否可以改进。比如说,如果它只保留瓷砖的颜色,你可以只创建一个 int 数组。但这样的事情真的取决于你的实施和要求。
  • 谢谢!这对我帮助很大!

标签: java user-interface 2d depth isometric


【解决方案1】:

我在 3D 显示器中做了一个简单的深度感知。深度感知的基本方程是:感知大小=大小/距离,就是这样。因此,对于每个 3D 点,我设置它们对应的感知 2D 大小:x2D = x3D/(zoom - z3D) 和 y2D = y3D/(zoom - z3D)。其中 zoom 是您与轴原点的距离。这是否回答了您的深度问题?

【讨论】:

    猜你喜欢
    • 2012-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-09
    • 2015-04-19
    • 1970-01-01
    相关资源
    最近更新 更多