天天看點

《Cocos2d 跨平台遊戲開發指南(第2版)》一1.9 添加動作到精靈

本節書摘來異步社群《cocos2d 跨平台遊戲開發指南(第2版)》一書中的第1章,第1.9節,作者: 【印度】siddharth shekar(謝卡)譯者: 武傳海 責編: 胡俊英,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

在前面的動畫制作中,我們已經學習了一些有關actions的内容。除此之外,cocos2d中還有更多動作供你使用。并且,你也可以把多種動作組成一個動作序列,集中應用到目标對象上。

首先,讓我們一起看一個簡單的動作,它用來把hero沿着x軸移動螢幕寬度的一半,并沿y軸方向從中心向下移動螢幕高度的四分之一。

在把hero添加到mainscene之後,在mainscene.m檔案中添加如下代碼:

為了友善起見,我建立了一個cgpoint,命名為finalpos,用來存儲最終位置。然後,建立一個ccactionfinitetime類型的變量actionmove,調用ccmoveto函數,指定動作的持續時間為1.0秒,并且給出想把hero移動到的目的位置。最後,調用hero的runaction函數,傳入建立好的動作。

當你運作項目時,hero起初位于黃色渲染精靈的左側,而後慢慢開始向右下角移動,(注:原文中if the render sprite is over a period of 1second一句,建議删除,因為并未對render精靈施加動作,它是一直存在的)經過1秒之後,hero到達目标位置,移動動作停止,hero将再次靜止不動,如圖1-25所示。

《Cocos2d 跨平台遊戲開發指南(第2版)》一1.9 添加動作到精靈

接下來,讓我們建立更多動作,然後把這些動作放入一個動作序列中,依次執行這些動作。為此,我們将添加如下代碼,替換掉之前的動作代碼:

在上面代碼中,在把最終位置儲存到finalpos變量之後,我又把hero的初始位置儲存到名稱為initpos的cgpoint類型變量中,後面我們會用到它。

第一個動作是moveto動作,用來把角色移動到指定的位置。

接着,我們将使用rotateby動作,對角色進行旋轉,并指定持續時間與旋轉角度。

随後,我們會使用tintto動作,它用來改變角色對象的顔色,并再次給出持續時間與想改變的顔色。本示例中,我們把角色的顔色更改為綠色。

然後,我們調用延時動作,用來在執行下一個動作之前暫停一段時間。在示例中,我們把延時時間設定為1秒。

接下來,我們要把角色對象移動到最初位置,改變對象顔色為藍色,再次把對象旋轉180度。

然後,建立ccsequence動作,把所有動作放入其中,以便依次播放這些動作。動作添加完之後,再添加一個nil,表示動作清單結束。

最後,我們調用hero的runaction函數,執行動作序列。

現在,人物角色将從起始位置開始執行一系列動作,當他傳回起始位置時,将變為藍色。

代碼産生的效果如圖1-26所示。

《Cocos2d 跨平台遊戲開發指南(第2版)》一1.9 添加動作到精靈