有人用ccc与tiled地图做出了45度前后遮挡关系的游戏吗

我这几天都在试45度地图,发现遮挡有问题。包括cases中的shieldNode例子也一样有问题。

45度地图中:当人在右上的时候左下的树木可以遮挡人,但是当人在左下,树木在右上的时候会被树木遮挡一下人(完全移动过去后才被人遮挡)

使用的都是addUserNode(人)

还有现在市面上45度游戏都是用什么做的呢?求大佬指教。ccc这里应该怎么弄呢

1赞

遮挡是根据userNode的位置在哪个图块进行判断的。你说的shieldNode例子中可能也会出现同样的问题,即当人在左下,建筑在右上,人被建筑遮挡的情况,那是因为人的锚点设置成了(0.5,0.5),并且地图的渲染顺序是右下的。这时可能会出现人在左下,但是其位置(锚点)实际上是和建筑同一行,但因为在其左边,所以被遮挡了。这个时候如果把锚点设为(0,0)比较合适。
ISO的话,Tiled官方给的说明是渲染顺序暂时不起作用,不知道ccc默认是按什么顺序渲染的,可以试一下。

改了锚点 感觉还是一样的,因为始终要把人node放到坐标位置。

得要手动改渲染循序或者node排序之类的

最终你还是需要修改zIndex来处理前后排序的
我是用45度的地图,
但实际上最后的物件你会打散放在不同图层中 ( 为了优化dc )

对于单一图层有许多node的情况,node排序似乎不好使,我是最终修改了zIndex来排序
参考看看

你也是用的addUserNode这个函数吗?我修改node的zindex=9999没有效果,还是要被遮挡

哦,不是的,
我的TiledMap只是拿来计算格子位置,
其他物件都在不同图层里面,
例如
0. node ( TiledMapNode )

  1. node ( 放一张大的背景图 )
  2. node ( 存放N个背景物件 )
  3. node ( 存放N个角色物件 )

大概是这样的结构,所以用的是一般的 node.addChild( node )
不过我的做法不一定正确,
论坛的大神们可能有更好的建议,我只是提供一种做法让你参考