如何处理等距瓷砖中的动画门


10

我遇到了一个棘手的问题,我不确定该如何最好地解决:我有一个动画的门砖。当它关闭时,应该以一种方式进行排序,但是当它是openend时,则需要以不同的方式进行排序,因为它属于不同的(相邻拼贴)。

这是关着的门:

关门

门开了:

门开了

我想可以覆盖此类图块的排序系统并根据框架调整排序,但感觉有些不客气。

有没有人遇到过类似的情况?有什么优雅的解决方案吗?


2
您的排序系统当前如何检测图块的绘制顺序?
罗伊·T。

Answers:


4

也许您可以用两个物体在不同的瓷砖上做成一扇门,而一次只显示其中一个。这样,打开的门也可能会阻止移动,这似乎是现实的。


4

创建三个精灵...

  1. 门已关闭(就像您的第一个精灵)-阻止移动
  2. 只是门的框架(在您的情况下为支柱),但没有门-不会阻止移动
  3. 只是门处于打开位置-阻止移动

关上门后,画出精灵1,并将其视为“障碍物”,以使玩家无法穿过它。

当门打开时,将那个精灵替换为#2(只是门柱)。然后将精灵#3(正好是门)放在门所在的相邻单元格中。

关闭只是移开门,然后将门柱替换为处于关闭位置的门柱+门。

使用此设置,您不必担心以任何特殊顺序渲染打开的门。只需按照其所在的正方形中的其他任何对象的顺序渲染它即可。

不利的一面是,您不能在已打开门的广场上放置播放器或任何其他物体。


3

我使用2种技巧进行2D排序:

  • 向精灵添加地面位置,这是精灵接触地面(女性的脚,树干,门框)并按其排序的点,而不是精灵像素。这种方式精灵不会受到动画的影响

  • 将不可排序的子项添加到对象中(男人可以有几个不影响排序的子项-斗篷,弓,剑等,门框具有子门)。这样子精灵的动画也不会影响排序。


1

解决对象排序的最好方法是根本不排序。如果使用深度缓冲区,则可以一次渲染所有内容。z值较高的对象将比z值较低的对象更远。

即使您的游戏是2D游戏,您仍应考虑将3D坐标与深度缓冲区一起使用,否则您将永远不忘画家的算法


是的,但是如何确定Z位置呢?仅通过排序
Kromster

是的,但是排序现在是离线进行的,而不是在渲染期间进行的。现在,关卡设计者可以考虑Z值来构建关卡,而不必担心剪切对象。
knight666
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.