【发布时间】:2013-10-09 22:42:42
【问题描述】:
我正在尝试用 js(画布)编写游戏引擎。到目前为止,一切都很好。 但是我遇到了一个问题,我的世界是菱形的,我从上到下渲染瓷砖。
问题是当我有一个大于 1 个图块(例如 2x2)的图块时,会发生这种情况:
房子是在瓷砖 (2,1) 上定义的。 左边的石头放在 (1,0)
首先渲染图块 (1,0),下一个图块是 (2,1),因为它位于同一行且位于右侧。
你怎么能解决这个问题?
【问题讨论】:
-
您不能按图形在屏幕上的 y 位置对图形进行排序(暂时忽略图块,从图形的底部中心点开始测量)并按顺序绘制它们。
-
好吧,岩石和房屋的 y 位置完全相同,即使岩石的 y 位置较低(因此更靠近顶部),它也应该与房屋重叠。还应该有一个地图生成器,所以你可以把你的房子放在你想要的任何地方。确定应该在前一个精灵之前绘制哪些精灵会变得非常复杂
-
如果你把你的房子分成两部分,事情会简单得多。这样,分支出来的部分将被视为自己的图形并落在后面。
-
是的,这也是我的想法,我应该将整个图块 (2x2) 分成垂直切割的 3 个笔划。一个用于 1,1(左半冲程),一个用于 2,1(全冲程),一个用于 3,1(右半冲程)。我应该在游戏加载时这样做
-
听上去你已经完完全全了——我喜欢这样。祝你好运。
标签: javascript game-engine isometric