我正在尝试以平滑的方式在 CCTMXMap 周围移动 Sprite 。我已经弄清楚如何(使用 CCActions)从一个图 block 移动到另一个图 block ,但是我的动画出现了间隙(它在重新评估行走方向时暂停了一帧)。我尝试过在计划的 update: 方法中移动角色,但是当您尝试将 Sprite 限制为仅在图 block 之间移动时,情况会变得困惑。关于如何使用更新获得干净、一致的动画而不需要困惑的手动动画有什么建议吗?
最佳答案
是的,不要使用操作。使用 CCActions 时总会遇到 1 帧延迟问题。
在更新中移动 Sprite 确实非常简单。特别是如果您将移动速度(每帧点数)限制为可以明显被图 block 尺寸整除的情况下。例如,如果您的图 block 为 40x30,则水平速度 1、2、4、8、10 就可以正常工作。垂直方向 1,2,3,5,6,10 即可。
用这个数字更新位置,将其向下转换为 int,将其与目标位置进行比较:
if ((int)currentPos.x == (int)targetPos.x && (int)currentPos.y == (int)targetPos.y)
{
NSLog(@"I'm there!");
}
转换为 int 的原因是为了避免浮点值的舍入错误。
另一种解决方案是 - 特别是如果你的角色一次只能朝一个方向移动 - 计算出他到达那里所需的帧数。如果角色必须向右移动 40 点,并且他每帧移动 4 点,则需要 10 帧。然后只需计算帧数(更新方法运行了多少次),如果达到 10(如果倒数则为 0),那么您就知道角色已经到达,而无需检查他的位置。
关于ios - Cocos 2D - 在平铺 map 上移动 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13960875/