2012-12-19 142 views
0

我想以平滑的方式移动一个精灵周围的CCTMXMap。我已经想出了如何(使用CCActions)从瓷砖移动到瓷砖,但我在动画中留下了空白(它暂停了一帧,而它重新评估走向的方向)。我尝试在预定的更新中移动角色:方法,但是当您试图限制精灵只从平铺移动到平铺时会变得杂乱。有关如何获得干净,一致的动画,而不使用更新凌乱的手动动画的任何建议?Cocos 2D - 在平铺地图上移动精灵

回答

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),那么你就知道角色已经到达了,而不需要检查他的位置。