Cocos 元素位置错位问题收集
最近在修复Cocos的一些Node位置错位的问题,遇到了连个比较有意思的点,而且比较隐蔽,这里记录下
物理引擎导致的位置偏移
我的游戏属于一个简单的跳跃游戏,通过物理引擎来计算节点的运动轨迹,但是一旦运行时间过长,就会出现坐标的偏移。
经过排查,是因为当角色节点下落撞到地面时,如果上一帧还没有接触地面,下一帧却陷入地面几个像素后,物理引擎会将角色节点重新推出,这个过程中,可能会造成横坐标的偏移,如果次数过多,就会造成比较明显的坐标偏移
设置位置无效问题
针对上面那个问题,我一开始的解决方案是在接触地面后,在碰撞体回调事件中,重新通过setPosition矫正位置,但结果是setPosition执行会失效,需要通过setTimeout在下一帧执行才行