好的,要模拟精灵“滚动”的效果,您必须结合旋转和平移。为了令人信服,您必须获得正确的平移量,以使身体不会出现与平移不同步的旋转,例如旋转过快或过慢而无法移动量。您可以通过反复试验来确定移动的距离,或者如果精灵几乎是圆形的,您可以相当精确地计算它。
对于一个完美的圆(最简单的情况),当它沿着地面滚动时,滚动的距离等于半径乘以旋转的弧度。所以对于一个完整的旋转,移动的水平距离将是 2*pi*r。对于部分旋转,在您的情况下为 130 度,对于圆形精灵,行进的水平距离将为 -130 * (pi/180) * sprite.contentSize.width/2。pi/180 用于将度数转换为弧度。对于一个不完美的圆圈,这个公式会让你接近,但你可能需要调整它才能得到正确的外观。所以回顾一下,连同一些示例代码,你的方法可能是这样的:
float radius = mySprite.contentSize.width/2;
float radians = CC_DEGREES_TO_RADIANS(-130);
float distance = radians * radius;
CCRotateBy *rotateAction = [CCRotateBy actionWithDuration:0.2 angle: -130];
CCMoveBy *moveAction = [CCMoveBy actionWithDuration:0.2 position:ccp(distance, 0)];
CCSpawn *spawnAction = [CCSpawn actionOne:rotateAction two:moveAction];
[mySprite runAction:spawnAction];