我正试图以平滑的方式在CCTMXMap周围移动一个精灵。我已经弄清楚(使用CCActions)如何从瓦片移动到瓦片,但是我在动画中得到了空白(它在重新评估行走方向时暂停一帧)。我已经尝试在预定的更新中移动角色:方法,但是当你尝试将精灵限制为仅从瓦片移动到瓦片时,这会变得混乱。关于如何使用更新来获得干净,一致的动画而没有混乱的手动动画的任何建议?
答案 0 :(得分: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),那么你知道角色已经到达而无需检查他的位置。