江南百景图的游戏层级是怎么实现的?

像江南百景图这种2D游戏,游戏里面的层级是怎么实现?
比如有些牌楼,人物在门口前面则人物的层级在上面;但是人穿过门口时,牌楼的墙可以遮住人物,此时人物的层级在下面。
动态设置zIndex的,它的动态设置规则是怎么样的,才能达到这个效果

例如说,在穿过牌楼的门口时,在人物移动到什么位置时才设置zindex在牌楼下面?整个地图的节点层级机制是如何实现的?

没听过江南百景图,要不来一个截图看看?

根据坐标来设置ZIndex

这。。。挺火的一游戏。。。

我猜是人物移动的时候取附近的建筑信息,有遮挡的时候把透明度设0

譬如人走到 2,1的位置,取3,2的建筑看这个建筑的高度是否需要挡住人

是根据坐标来设置zindex,但是具体设置逻辑是怎样的?我想到的是,会根据坐标x.y来设置层级,只要A.x > B.x || A.y > B.y,那么就设置A在B的后面。但是建筑物的构造都不相同的,比如牌楼,桥,那么每个建筑物的锚点的位置都应该不尽相同,需要单独来设置,这样就比较繁琐了,我想到的也就这。或者有没有更好策略?

透明度设置0是怎么实现的,比如墙遮挡了人物的一般,是遮挡的那一半透明度设置为0?这个太复杂了吧

分三个层级吧?把墙切成前景层和后景曾,人物在中间

我错了,没看仔细,改透明度方案不行,
人物和建筑这么多改zindex的话岂不是每帧都要变动节点,感觉性能不太好的样子?

我记得unity里改一下z就可以调整显示的叠加顺序了,把建筑的z设置在某个范围譬如1,2,3,4,5
人物设z为4.1就可以实现挡住1,2,3,4的建筑和被5挡着

所有建筑都是n x n的格子,人物移动的时候判断附近的格子是什么样的建筑,高度多少,动态改变人物的z。或者是建筑摆好后配置好每个空余格子的叠加信息,人一边走格子一边根据配置改自己的z

需要建筑和人物做动态排序,这部分逻辑挺复杂的,有很多 tricky 的问题

搜了一下这个游戏,一看这风格就是 isometric - 等角投影,也就是俗称的2.5D游戏,已经很成熟了,10+年前就有了

官方文档多看看

1赞

3赞

动态检测坐标,改变层级关系

1赞

硬核回复…