在cocos2d中滚动一个精灵?
问题描述:
我正在做一个小游戏,在这个游戏中我有两个menuitem按钮,一个是跳转,一个是滚动,我实现了使用ccjump的跳转功能,但我无法实现滚动功能,为此我使用了ccrotate函数,谁能帮助我对这个问题...提前在cocos2d中滚动一个精灵?
这里感谢是我的滚动码
id action= [CCRotateBy actionWithDuration: 0.2 angle:-130];
[mysprite runAction:action];
谁能给我精确解????????
答
好的,以模拟精灵“滚动”的影响,你必须结合旋转和平移。为了让人信服,你必须得到适量的翻译,以便身体似乎不会与翻译同步,比如移动的速度太快或太慢。您可以通过反复试验确定移动的距离,如果精灵几乎是圆形的,则可以相当精确地计算出它。
对于一个完美的圆(最简单的情况),当它沿着地面滚动时,滚动的距离等于半径乘以旋转的弧度。因此,对于完整的旋转,移动的水平距离将是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];
你是什么意思'部分'?当你选择滚动的菜单按钮时,你能否确认上述代码实际上得到执行? – YvesLeBorg
感谢YvesLeBorg,部分在我意识到当我点击滚动菜单按钮时,精灵旋转了-130度并回到原来的位置,而不是这个旋转我想滚动精灵 – mahesh
然后,我们可能没有看着正确的代码行。这应该每次都有效。在此操作完成后,您必须在代码中的其他位置更改Sprite的旋转角度。 – YvesLeBorg