我正在做一個小遊戲,在這個遊戲中我有兩個menuitem按鈕,一個是跳轉,一個是滾動,我實現了使用ccjump的跳轉功能,但我無法實現滾動功能,爲此我使用了ccrotate函數,誰能幫助我對這個問題...提前在cocos2d中滾動一個精靈?
這裏感謝是我的滾動碼
id action= [CCRotateBy actionWithDuration: 0.2 angle:-130];
[mysprite runAction:action];
誰能給我精確解????????
我正在做一個小遊戲,在這個遊戲中我有兩個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