setPosition()导致的精灵闪烁问题

问题描述:
1、写的是一个坦克大战的游戏
2、考虑坦克与地图边界和坦克与地图块的碰撞检测(其他可忽略)

实现:以下两步都在场景的update里面实现
1、假设坦克可以移动,往对应的行动方向移动(+1)
2、当检测到“移动后”的坦克存在碰撞或越界,则往反向移动(-1)

问题在于:
步骤2中,对于边界的检测我使用的是setPositionX()或setPositionY()

但是在与地图土块的碰撞,我使用了

理论上,两种方法都是将坦克放回原位
方法1:虽然是设定到一个“固定值”,但是依旧是回到之前的位置
方法2:理论上不是+1再-1就回到原位嘛?

猜测:
是不是update里面并不是等到所有步骤都执行完就已经刷新了之类的?还是说+1之后-1的方式不合理?

问题已经解决
依旧是使用+1与-1的方式恢复,但是简化了判断方式,之后就不再会出现上述问题了。至于产生原因待研究。

直接使用坐标位置是否存在方块判断碰撞,而不在使用两个矩形判断是否接触来判断碰撞

并不清楚为何这种改进可以避免闪烁问题。