TiledLayer使用addUserNode添加了两个元素,目前两个元素的遮挡关系是跟x坐标也有关系,能否设置成只跟y坐标有关?
正常:
x坐标影响:
TiledLayer使用addUserNode添加了两个元素,目前两个元素的遮挡关系是跟x坐标也有关系,能否设置成只跟y坐标有关?
正常:
x坐标影响:
你说的这两个情景,两个User Node都是在同一个Tile吗?还有就是地图的渲染顺序是什么?
都在同一个TiledLayer上面,渲染顺序是右下,这是代码:
let player = cc.instantiate(this.playerPre);
player.x = 299;
player.y = 268;
this.obstacleLayer.addUserNode(player);
let felt = cc.instantiate(this.feltPre);
felt.x = 289;
felt.y = 260;
this.obstacleLayer.addUserNode(felt);
发现一个规律,在初始化的时候添加人物和火盆,人物在火盆的右上方,火盆遮挡人物,正常。
当我改变人物的y坐标,向下移动一段距离,人物再向上移动回到初始化的位置,人物遮挡了火盆,显示顺序不对了。
你说的这个右上方是视觉上的右上方,还是指人物所在的Tile在火盆所在的Tile的右上方?视觉上右上方并不代表Tile坐标右上方,因为假设User Node的锚点在左下,那么就可能看起来人物在火盆右上,但实际上还在同一个Tile的情况。
在同一个Tile时,User Node的遮挡顺序是后来的会遮挡之前的。
所以,你说的这种情况有种可能是,人物和火盆都在同一个Tile,初始时,后添加的火盆会覆盖人物。当人物移动再回来之后,就会覆盖火盆了。
如果确定不是同一个Tile,那就要看你是不是通过设定刚体的速度来移动的人物,如果是的话,目前这种方式移动后不会更新遮挡关系,需要手动更新。
右上方指的是xy坐标,人物的xy坐标都大于火盆的xy坐标,看上面贴的代码。
人物移动我是通过修改坐标来实现的:
this.node.x += this.dx;
this.node.y += this.dy;
另外请教一下,如果需要手动更新显示顺序,是调用什么api啊?
嗯,知道原因了,我添加的xy坐标不在Tile坐标的中心位置。在Tile坐标边界上导致的,感谢
请问你是如何对齐的呢?同样的问题