我正在尝试以平滑的方式在 CCTMXMap 周围移动精灵。我已经弄清楚如何(使用CCActions)从一个瓷砖移动到另一个瓷砖,但是我的动画出现了间隙(它在重新评估行走的方向时暂停了一帧)。我已经尝试在预定的 update: 方法中移动角色,但是当您尝试将精灵限制为仅从瓷砖移动到瓷砖时,这会变得混乱。关于如何使用更新获得干净、一致的动画而没有混乱的手动动画的任何建议?
问问题
613 次
1 回答
1
是的,不要使用动作。使用 CCActions 时总是会遇到 1 帧延迟问题。
在更新中移动精灵非常简单。尤其是如果您将移动限制在可以明显被图块大小整除的速度(每帧点数)。例如,如果您的图块是 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),那么你就知道角色已经到达,而无需检查他的位置。
于 2012-12-19T23:09:50.477 回答