【干货】制作 oblique/cabinet 投影的 2D 游戏时,确认精灵先后顺序的排序方法( 二 )
文章图片
带有弧线的那一端是射线的末端 , 末端的物体比首端的物体更先渲染(位置更靠后) 。
这里说明一下 , 我们只对需要排序的一对物体进行连线(出于性能考虑) , 所以你的显示对象可能需要有相应的bounding_box或是什么的 。
文章图片
当场景中的物体足够多 , 遮挡关系足够复杂时 , 不难发现 , 我们的物体遮挡关系实际上构建出了一个有向图 。 而有向图可以通过拓扑排序来获取一个不唯一的线性序列 , 照着这个线性序列进行渲染就可以获得正确的场景排序了 。
文章图片
(图中蓝绿色的矩形是判断精灵相交/重叠用的bounding_box , DRAWIDX则是拓扑排序后得到的渲染顺序值)
这样 , 就得到了整个场景的正确呈现顺序 。
最后一点问题
相信我们都看到过一些"视觉错觉"的趣味图片 , 对吧?譬如三个无限循环的台阶 , 相互遮挡的三个棱柱……之类的 , 很有意思 , 不过在游戏开发当中可一点也不有趣 。 很显然 , 当游戏场景中出现了几个互相存在遮挡和被遮挡关系的对象时 , 我们构造出的有向图就成环了 。 而成环的有向图是不能进行拓扑排序的 , 这就导致我们没有办法去按正确顺序呈现画面 。 解决这个问题的最好方法就是把容易引起该问题的那个物体分割为两个物体 , 使得其中的一个部分"专门遮挡"而另一个部分"专门被遮挡" , 这样就可以消除我们构造的有向图中的环 。
本次的讨论就到这里 , 祝大家开发顺利 , 新年快乐!
- 【名企|观察】60天突破45500台,红旗品牌有一点变化不容忽视
- 答用户问:怎么用好飞天指标组选股?
- 坐等上市!比日产轩逸漂亮,2.0L发动机+2750mm轴距
- 再见了,银行卡!央行发布最新通知,4月1日起,银行卡时代将终结
- 币安与以太坊兼容并蓄 共携DeFi大道
- ol黑丝小姐姐,好有韵味
- 就剩这一个能吹的!特朗普不让拜登停修墙项目,火力全开怼新政府
- 四川一个军工厂,曾生产通信保密机,如今厂房荒废,只剩回忆
- 【简珺童话】北洋舰船为何去长崎油修?
- 不带豪车标,却卖豪车价,买这几款车才是深藏不露的人生赢家