ios - Cocos 2D - 在平铺 map 上移动 Sprite

标签 ios animation cocos2d-iphone sprite

我正在尝试以平滑的方式在 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/

相关文章:

ios - 带有核心数据的预加载数据库

ios - 音频时序出现问题

css - SVG 和 CSS 重力动画

java - ValueAnimator 只重复一次

javascript - 涟漪动画 : fromPage is undefined! 与霓虹动画 1.1.1+

ios - 无论如何要在 Action 开始后修改 CCMoveTo 的目的地?

ios - 如何解决核心数据错误 : Attempt to add read-only file at path when trying to access Core Data container in the app extension today widget?

iOS/信标 : Reset didEnterRegion possible?

objective-c - 从 plist 文件写入和读取

objective-c - import "cocos2d.h"在一些文件中有效,但不是全部