《Cocos2d 跨平台游戏开发指南(第2版)》一1.9 添加动作到精灵
本節書摘來異步社區《Cocos2d 跨平臺游戲開發指南(第2版)》一書中的第1章,第1.9節,作者: 【印度】Siddharth Shekar(謝卡)譯者: 武傳海 責編: 胡俊英,更多章節內容可以訪問云棲社區“異步社區”公眾號查看。
1.9 添加動作到精靈
在前面的動畫制作中,我們已經學習了一些有關Actions的內容。除此之外,Cocos2d中還有更多動作供你使用。并且,你也可以把多種動作組成一個動作序列,集中應用到目標對象上。
1.9.1 準備工作
首先,讓我們一起看一個簡單的動作,它用來把hero沿著x軸移動屏幕寬度的一半,并沿y軸方向從中心向下移動屏幕高度的四分之一。
1.9.2 操作步驟
在把hero添加到MainScene之后,在MainScene.m文件中添加如下代碼:
CGPointfinalPos = CGPointMake(center.x + winSize.width/4, center.y - winSize.height/4); CCActionFiniteTime* actionMove = [CCActionMoveToactionWithDuration :1.0position:finalPos]; [herorunAction:actionMove];為了方便起見,我創建了一個CGPoint,命名為finalPos,用來存儲最終位置。然后,創建一個CCActionFiniteTime類型的變量actionMove,調用CCMoveTo函數,指定動作的持續時間為1.0秒,并且給出想把hero移動到的目的位置。最后,調用hero的runAction函數,傳入創建好的動作。
1.9.3 工作原理
當你運行項目時,hero起初位于黃色渲染精靈的左側,而后慢慢開始向右下角移動,(注:原文中if the render sprite is over a period of 1second一句,建議刪除,因為并未對render精靈施加動作,它是一直存在的)經過1秒之后,hero到達目標位置,移動動作停止,hero將再次靜止不動,如圖1-25所示。
1.9.4 更多內容
接下來,讓我們創建更多動作,然后把這些動作放入一個動作序列中,依次執行這些動作。為此,我們將添加如下代碼,替換掉之前的動作代碼:
//ActionsCGPointinitPos = hero.position; CGPointfinalPos = CGPointMake(center.x + winSize.width/4, center.y - winSize.height/4);CCActionFiniteTime* actionMove = [CCActionMoveToactionWithDuration: 1.0position:finalPos];CCAction *rotateBy = [CCActionRotateByactionWithDuration:2.0 angle: 180];CCAction *tintTo= [CCActionTintToactionWithDuration:1.0 color:[CCColorcolorWithRed:0.0fgreen:1.0blue:0.0]];CCAction *delay = [CCActionDelayactionWithDuration:1.0];CCAction *moveToInit = [CCActionMoveToactionWithDuration: 1.0position:initPos];CCAction *rotateBack = [CCActionRotateByactionWithDuration:2.0 angle: 180];CCAction *tintBlue= [CCActionTintToactionWithDuration:1.0 color:[CCColorcolorWithRed:0.0fgreen:0.0blue:1.0]];CCAction *sequence = [CCActionSequenceactions:actionMove, rotateBy,tintTo, moveToInit, delay, rotateBack, tintBlue, nil];[herorunAction:sequence];在上面代碼中,在把最終位置保存到finalPos變量之后,我又把hero的初始位置保存到名稱為initPos的CGPoint類型變量中,后面我們會用到它。
第一個動作是moveTo動作,用來把角色移動到指定的位置。
接著,我們將使用rotateBy動作,對角色進行旋轉,并指定持續時間與旋轉角度。
隨后,我們會使用tintTo動作,它用來改變角色對象的顏色,并再次給出持續時間與想改變的顏色。本示例中,我們把角色的顏色更改為綠色。
然后,我們調用延時動作,用來在執行下一個動作之前暫停一段時間。在示例中,我們把延時時間設置為1秒。
接下來,我們要把角色對象移動到最初位置,改變對象顏色為藍色,再次把對象旋轉180度。
然后,創建CCSequence動作,把所有動作放入其中,以便依次播放這些動作。動作添加完之后,再添加一個nil,表示動作列表結束。
最后,我們調用hero的runAction函數,執行動作序列。
現在,人物角色將從起始位置開始執行一系列動作,當他返回起始位置時,將變為藍色。
代碼產生的效果如圖1-26所示。
總結
以上是生活随笔為你收集整理的《Cocos2d 跨平台游戏开发指南(第2版)》一1.9 添加动作到精灵的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《Altium Designer 14电
- 下一篇: 《HTML5多媒体应用开发》——第2章