cocos2d遊戲引擎介紹

來源:互聯網
上載者:User
文章目錄
  • 一、Cocos2d遊戲引擎介紹
  • 二、Cocos2d遊戲引擎安裝
  • 三、Cocos2d基本概念
  • 四、Cocos2d遊戲動作
  • 五、Cocos2d的Touch事件
  • (六)幀動畫序列製作工具——Zwoptex
  • 添加動畫
  • 播放聲音

目錄:

Cocos2D遊戲引擎介紹Cocos2D遊戲引擎安裝Cocos2D基本概念Cocos2D遊戲動作Cocos2D的Touch事件幀動畫序列製作工具介紹一、Cocos2d遊戲引擎介紹

Cocos2d是一個開源架構,用於構建2D遊戲、示範程式和其他圖形介面互動應用等.

主要功能:1.流程式控制制(Flow control):非常容易地管理不同情境(scenes)之間的流程式控制制2.精靈(Sprites):快速而方便的精靈3.動作(Actions):告訴精靈們該做什麼。可組合的動作如移動(move)、旋轉(rotate)和縮放(scale)等更多4.特效(Effects):特效包括波浪(waves)、旋轉(twirl)和透鏡(lens)等更多5.平面地圖(Tiled Maps):支援包括矩形和六邊形平面地圖6.轉換(Transitions):從一個情境移動到另外一個不同風格的情境7.菜單(Menus):建立內部菜單8.文本渲染(Text Rendering):支援標籤和HTML標籤動作9.文檔(Documents):編程指南 + API參考 + 視頻教學+ 很多教你如何使用的簡單測試例子10.基於Pyglet:沒有外部的依賴11.基於OpenGL:支援硬體加速二、Cocos2d遊戲引擎安裝

說明:從0.99.0版本開始,Cocos2d-iPhone的模板類要求蘋果SDK3.0及以上版本。

1.下載:cocos2d-iphone最新版0.99.5;2.開啟Terminal工具,進入Cocos2d-iPhone-0.99.5目錄下;3.執行命令:./install_template.sh

4.安裝完畢後啟動Xcode,開啟菜單File->New Project,出現如下視圖三、Cocos2d基本概念

開發cocos2d應用程式,必須先瞭解如下四個概念:

1.Scenes(情境)

   是app 工作流程上獨立塊。一個app可能擁有多個scenes, 但在任何時候只能有一個是啟用狀態的。一個CCScene對象由一個或多個layers組成,layers之間是前後相連的。layer提供了scene的外觀 appearance和行為behavior.

2.Director(導演)

    CCDirector負責scenes之間的前進或後退。CCDirector是singleton模式的共用的對象,它知道當前哪個scene是啟用。

3.Layers(層)

    CCLayer對象定義了可描繪的地區,定義了描繪的規則。當編寫cocos2d程式的時候,大部分工作就是編寫CCLayer的子類去實現所要的效果。 

4.Sprites(精靈)

    sprite對象就是一個可以移動、選擇、伸縮、動畫的2d圖形,CCSprite 對象的子成員中可以包含其它的CCSprite 對象。

四、Cocos2d遊戲動作(一)基本動作1.瞬時動作——馬上就完成的動作放置——Place隱藏——Hide顯示——Show可見切換——ToggleVisibility2.延時動作——完成需要一定的時間移動到——CCMoveTo移動——CCMoveBy跳躍到——CCJumpTo跳躍——CCJumpBy貝塞爾——CCBezierBy放大到——CCScaleTo放大——CCScaleBy旋轉到——CCRotateTo旋轉——CCRotateBy閃爍——CCBlink色調變化到——CCTintTo色調變化——CCTintBy變暗到——CCFadeTo由無變亮——CCFadeIn由亮變無——CCFadeOut  延時動作就是指動作的完成需要一定時間。因此,actionWithDuration是延時動作執行是第一個參數,延時動作的共同基類是CCIntervalAction。(二)組合動作組合動作就是指按照一定的次數將不同的基本動作組合起來,形成連貫的一套組合動作。組合動作主要包括以下幾類:序列CCSequence:線序排列若干個動作,然後按先後次序逐個執行。同步Spawn:同時並列執行若干個動作,但要求動作都必須是可以同時執行的。重複有限次數Repeate:重複執行有限的次數的動作。反動作Reverse:反向或逆向執行某個動作,支援針對動作序列的反動作序列。動畫Animation:就是讓精靈自身的連續執行一段影象,形成類比運動的效果。

無限重複RepeatForever:無限期執行某個動作或動作序列,直到被停止。(三)CallFunc ActioCallFunc Action 允許你可以在一個action裡面調用一個方法。在序列action裡面的最後一個調用,會非常有用。  Example:

id actionTo = [MoveTo actionWithDuration: 2 position:ccp(s.width-40,s.height-40)];
id actionBy = [MoveByactionWithDuration:2  position: ccp(80,80)];
id actionCallFunc = [CallFunc actionWithTarget:self selector:@selector(doATask)];
id actionSequence = [Sequence actions: actionTo, actionBy, actionCallFunc, nil];


-(void) doATask
{

           //somecode
            }有兩種類型的CallFunc,分別是CallFuncN和CallFuncND CallFuncN 把node當作參數。 CallFuncND 需要node和一個指向某個資料的指標。Example:

id actionCallFuncN = [CallFuncN actionWithTarget:self selector:@selector(doATaskN:)];
id actionCallFuncND = [CallFuncND actionWithTarget:self selector:@selector(doATaskN:data:) [/pre]data:pointerToSomeData];
- (void) doATaskN: (id)node
{//some code
}
- (void) doATaskND: (id)node data:(void*)d
{//some code
}

(四)速度變化基本動作和組合動作實現了針對精靈的各種運動、動畫效果的改變,但這樣的改變的速度是不變的,通過CCEaseAction為基類的類系和CCSpeed類可以很方便的修改精靈執行動作的速度:由快至慢還是由慢變快。EaseIn:由慢至快。EaseOut:由快至慢。EaseInOut:由慢至快再由快至慢。EaseSineIn:由慢至快。EaseSineOut:由快至慢。EaseSineInOut:由慢至快再由快至慢。EaseExponentialIn:由慢至極快。EaseExponentialOut:由極快至慢。EaseExponentialInOut:由慢至極快再有極快至慢。

Speed:人工設定速度,還可通過SetSpeed不斷調整。五、Cocos2d的Touch事件iPhone OS通過NSSet傳遞硬體感應器傳來的各種組合觸摸資訊。事件處理架構1.(void)touchesBegan:(NSSet *)touches

  withEvent:(UIEvent *)event {}

●2.(void)touchesMoved:(NSSet *)touches

  withEvent:(UIEvent *)event {}

●3.(void)touchesEnded:(NSSet *)touches

  withEvent:(UIEvent *)event {}

●4.(void)touchesCancelled:(NSSet *)touches

  withEvent:(UIEvent *)event {}

事件處理機制

核心:就是如何將系統使用者輸入資訊傳遞給每個Layer對象。

1.接管:從系統iPhoneOS的標準UIView獲得觸摸輸入。2.分發:按照預先定義好的邏輯分發給各種註冊對象。3.處理:註冊對象之間如何協調響應使用者的輸入。(六)幀動畫序列製作工具——Zwoptex在cocos2d中,大部分動畫都是預先渲染好的位元影像。然後通過動畫將各個圖片序列在一起播放。Zwoptex用途1.將多個單獨的PNG圖片合并成一個大的PNG圖片2.將合并之前的每一個小PNG圖片在合并之後PNG圖片中的位置座標以及圖片大小等進行通過參數檔案記錄儲存,供Cocos2d程式調用。

添加動畫

利用軟體Zwoptex製作的png和plist檔案添加動畫

       // 將花朵的png圖片序列和plist載入情境

        CCSpriteFrameCache *cache = [CCSpriteFrameCache sharedSpriteFrameCache];

        [cacheaddSpriteFramesWithFile:@"Flower.plist"];

        idsheet = [CCSpriteSheet spriteSheetWithFile:@"Flower.png"

                    capacity:60];

        [selfaddChild:sheet];

        // 將花朵Sprite添加到情境中

        FlowerSprite *sprite = [FlowerSprite node];

        CGSize size = [[CCDirector sharedDirector] winSize];

        sprite.position = ccp(size.width / 2, size.height / 2);

        [selfaddChild:sprite];

      CCSpriteFrameCache *cache = [CCSpriteFrameCache sharedSpriteFrameCache];

        NSMutableArray *frames = [[NSMutableArray array] retain];

        // 構造每一個幀的實際映像資料

        for (int i = 1; i <= FLOWER_SPRITE_SHEET_CAPACITY; i++) {

            NSString *frameName = [NSStringstringWithFormat:@"Flower%04d.png", i];

            CCSpriteFrame *frame = [cache spriteFrameByName:frameName];

            [framesaddObject:frame];

        }

        // 使用CCAnimation和CCRepeatForever構造一個一直重複的動畫

        NSString *firstFrameName = [NSStringstringWithFormat:@"Flower%04d.png", 1];

        idsprite = [CCSprite spriteWithSpriteFrameName:firstFrameName];

        CCAnimation *animation = [CCAnimation animationWithName:@"Flower“ delay:1.0f / 30  frames:frames];

        [spriterunAction:[CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:animation restoreOriginalFrame:NO]]];

        // 將構造好的動畫加入顯示列表

        [self addChild:sprite];

播放聲音

使用cocos2d的SimpleAudioEngine可以很簡單的播放背景音樂和音效。

1,準備工作

   引入標頭檔:#import "SimpleAudioEngine.h"

2,播放背景音樂

   [[SimpleAudioEngine sharedEngine] playBackgroundMusic:@"background.wav"];

3,播放音效

   [[SimpleAudioEngine sharedEngine]playEffect:@"effect1.wav"];

4,暫停背景音樂

   [[SimpleAudioEngine sharedEngine] pauseBackgroundMusic];

5,積極式載入背景音樂

   [[SimpleAudioEngine sharedEngine] preloadBackgroundMusic];

使用CDAudioManager來更改音樂的屬性(更改屬性之前必須有背景音樂在播放)

6,更改音量(音量大小從0到1)

   [CDAudioManager sharedManager].backgroundMusic.volume = 1.0f;

7,迴圈播放N次背景音樂

   [CDAudioManager sharedManager].backgroundMusic.numberOfLoops = N;

8,背景音樂停止時觸發事件

   [[CDAudioManager sharedManager] setBackgroundMusicCompletionListener:self

                                                                                                               selector:@selector()];

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.