Tiledmap使用物理系统导致遮挡不正确

  • Creator 版本:2.2.2

加入TiledLayer中的UserNode如果有刚体节点,且该节点的移动方式为设置速度的话,则导致该节点无法与Tile产生正确的遮挡关系。
经过测试,发现规律是若上一次通过设置position产生什么样的遮挡关系,之后再通过设置速度方式移动时,总是以之前的遮挡关系进行遮挡。

自己查明了,PhysicsManager在同步节点位置的时候把节点的事件给屏蔽了,所以没有触发POSITION_CHANGED事件,而TiledLayer是根据UserNode的POSITION_CHANGED事件将UserNode加到Grid中去的,所以无法正确遮挡。

PhysicsManager屏蔽POSITION_CHANGED事件又是因为刚体本身监听了这个事件来同步物理位置,屏蔽估计是为了防止套娃。。。

那到底在TiledMap中如何正确使用物理系统呢?实在不行,我就只好自己在节点的update帧中判断position变化来将UserNode加到Grid中去了。。。