cocos2d-x游戏设计实训指导书_第1页
cocos2d-x游戏设计实训指导书_第2页
cocos2d-x游戏设计实训指导书_第3页
cocos2d-x游戏设计实训指导书_第4页
cocos2d-x游戏设计实训指导书_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、最新cocos2d-x游戏设计实训指导书广州康大职业技术学院计算机系?cocos2d-x游戏设计?实训指导书目 录 TOC o 1-1 h z u HYPERLINK l _Toc270776102 绪 论 HYPERLINK l _Toc270776103 实训一 飞机大战发环境、获游戏开发资源 HYPERLINK l _Toc270776104 实训二 飞机大战游戏的创立以及飞机和子弹的添加 HYPERLINK l _Toc270776105 实训三 飞机大战中触屏事件实现 HYPERLINK l _Toc270776106 实训四 飞机大战碰撞检测 HYPERLINK l _Toc270

2、776107 实训五 飞机大战背景音乐绪 论实训任务本课程是游戏软件专业根底课程。其任务是让学生学习cocos2d-x游戏引擎的使用,通过制作一个飞机大战游戏,来熟悉游戏开发流程。以提出问题、思考问题、解决问题、发现新问题、思考新问题并解决新问题的方式来锻炼学生的思维方式和编程思想。培养学生筹划与实施工程的能力。培养学生交流与合作的能力实训目标知识目标1制作游戏背景;2制作飞机和子弹的精灵;3碰撞事件的处理4设计游戏的统计系统;5设计特效和道具。职业目标1培养学生谦虚、好学的品质;2培养学生勤于思考、做事认真的良好作风; (3)培养学生良好的职业道德;4培养按时、守时的软件交付观念;5培养阅读

3、设计文档、编写程序文档的能力。技能目标1培养学生良好的自我表现、与人沟通的能力;2培养学生的团队协作精神;3培养学生分析问题、解决问题的能力;4培养学生勇于创新、敬业乐业的工作作风;5培养学生的质量意识、平安意识;6培养学生老实、守信、坚忍不拔的性格;7培养学生自主、开放的学习能力。三、实训考核评定平时出勤20分,游戏演示40分,实训报告及源程序40分。 1“优秀标准:85-100分 2“良好标准:70-84分3“及格标准:60-70分 4“不及格标准:0-59分实训一 一、实训目的与要求让学生能够自己在电脑上配置好我们实训所需要的开发环境,主要包括软件的下载和安装,环境的配置,求每个学生都能

4、够独立完成。并且老师在实训前把准备好的实训资料,实训所需图片都发给学生。二、实训环境一实训设备配置比拟高的电脑S2022二实训软件1.vs20222.cocos2d-x 3.0版本3.cocos2d-ide 最新版本4.cygwin5 android ndk6.jdk,eclipse,android adt三实训场地实训楼3005实训准备准备好电脑下载好所需软件下载并制作好所需图片实训内容及过程1.1.安装VS2022这是微软开发的集成开发环境,也是cocos2d-x的C+主战场,1.2.安装CygwinCygwin是windows平台上运行Linux的模拟环境,对于从Linux到Window

5、s的应用程序移植,或者是使用GNU工具集在Windows上进行嵌入式开发都非常有用。可以通过在线安装,也可以离线进行安装,我们这里主要用来进行cocos2d-x跨平台安卓的交叉编译。1.3.安装JavaJava是Android支持的编程语言,也是安卓环境搭建的根底。主要麻烦的地方是环境变量的设置。1.4.安装带Android ADT的EclipseEclipse集成开发环境是用以android app,当然也可以进行C+的开发,只要你安装相应的组件即可。安装Android ADT就可以进行Android app的开发,这里选择直接使用谷歌提供的打包好Android ADT的Eclipse,就免

6、去了ADT的安装等操作。安装完成后,通过SDK管理器下载相应SDK版本就可以了。1.5.安装Android NDKAndroid NDK是Android系统对外提供的基于C+接口的软件工具包,它集成了交叉编译器,只要修改相应的编译脚本文件就可以创立出so文件,且自动将其与Android app进行打包。使用方式:进入EclipseWindowsPreferencesAndroidNDK选择所在的路径。需注意的是,有些较高NDK版本在和cocos2d-x配合编译的时候会出现问题。所以各个工具之间应选择可兼容的。1.6.安装cocos2d-xcocos2d-x引擎这里就不再介绍了,国内官网是 :/

7、cocos2d.cocoachina /。安装方式:1点击build-win32.bat,用来编译cocos2d-x文件。2点击install-templates-msvc.bat,用来安装VS模版向导。3create-android-project.bat,用来创立Andorid工程,在使用之前要先对其内容进行配置Cygwin路径,Android SDK路径,Android NDK路径)五、实训总结局部游戏展示实训二一、实训目的与要求实现游戏工程的创立,并且能够使用cocos2d-x游戏引擎的根本类和接口,完成导演、场景、图层、精灵的实例化。要求学生能够在老师的带着下,完成根本的工程构建,类

8、的使用。二、实训环境一实训设备配置比拟高的电脑S2022二实训软件Vs2022三实训场地实训楼3005三、实训准备1.准备好效果图四、实训内容及过程1.创立飞机大战工程工程,根本的类和方法的创立如下:1.创立GameScene类继承于CCScene。2.创立GameLayer类继承于CCLayer。3.为GameScene添加成员变量 GameLayer* _gameLayer。4.在GameScene的init里把_gameLayer add到场景中。2.添加飞机到场景中class PlaneLayer : public CCLayer public: PlaneLayer(void); P

9、laneLayer(void); static PlaneLayer* create();/实现create函数 virtual bool init(); public: static PlaneLayer* sharedPlane;/提供sharedPlane全局指针 ; /PlaneLayer.cpp PlaneLayer* PlaneLayer:sharedPlane=NULL;/静态变量要在cpp外初始化 PlaneLayer* PlaneLayer:create() PlaneLayer *pRet = new PlaneLayer(); if (pRet & pRet-init()

10、 pRet-autorelease(); sharedPlane=pRet;/获得静态指针sharedPlane的值 return pRet; else CC_SAFE_DELETE(pRet); return NULL; 3.添加敌机#include Enemy.h Enemy:Enemy(void) m_sprite=NULL;/m_sprite是CCSprite指针,用来绑定敌机 m_life=0;/生命值 Enemy:Enemy(void) Enemy* Enemy:create() Enemy* pRet=new Enemy; pRet-autorelease(); return p

11、Ret; void Enemy:bindSprite(CCSprite* sprite,int life)/绑定敌机,并传入生命值 m_sprite=sprite; m_life=life; this-addChild(m_sprite); CCSprite* Enemy:getSprite() return m_sprite; int Enemy:getLife()/获取生命 return m_life; void Enemy:loseLife()/生命值-1 m_life-; CCRect Enemy:getBoundingBox()/获取敌机大小 CCRect rect=m_sprite

12、-boundingBox(); CCPoint pos=this-convertToWorldSpace(rect.origin); CCRect enemyRect(pos.x,pos.y,rect.size.width,rect.size.height); return enemyRect; 添加子弹子弹的初始位置在飞机的机头位置,因为飞机在游戏的过程中会随着玩家的触摸而改变其位置,所以,子弹的初始位置只能以当前飞机位置为基准进行添加。CCPoint planePosition=PlaneLayer:sharedPlane-getChildByTag(AIRPLANE)-getPositi

13、on(); CCPoint bulletPosition=ccp(planePosition.x,planePosition.y+PlaneLayer:sharedPlane-getChildByTag(AIRPLANE)-getContentSize().height/2); bullet-setPosition(bulletPosition); 五、实训总结添加飞机和子弹后的效果图实训三一、实训目的与要求完善对游戏引擎的知识的学习,掌握游戏开发中必须要的知识点,熟练使用游戏引擎开发游戏,到达高水平 游戏的开发效果,在实训中,掌握核心的游戏开发知识。要求学生能够对智能 的不同触屏事件,进行不

14、同的处理方法,能够在游戏中灵活使用二、实训环境一实训设备配置比拟高的电脑S2022二实训软件Vs2022三实训场地实训楼3005三实训准备1.准备好效果图四实训内容及过程1.触屏方法 CCTargetedTouch它是从CCNode继承来的,同时也继承了3个硬件相关接口事件,分别是触摸事件,加速器事件和键盘事件。所以我们可以直接在CCLayer中进行触摸事件的处理。触摸事件中有两个类,CCStandradTouch,CCTargetedTouch。前者为多点触摸,后者为单点触摸,而系统默认注册前者分发事件,我们这里要进行继续重载虚函数registerWithTouchSpatcher,对单点有

15、效。2.触屏回调方法:virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);/触摸开始调用 virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);/触摸移动调用 virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);/触摸结束调用 virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);/一般是系统级调用,比方触摸过程中来电之类

16、的3.实现暂停功能bool ControlLayer:init() bool bRet=false; do CC_BREAK_IF(!CCLayer:init(); CCSize winSize=CCDirector:sharedDirector()-getWinSize(); /参加PauseMenu CCSprite* normalPause=CCSprite:create(CCSpriteFrameCache:sharedSpriteFrameCache()-spriteFrameByName(game_pause_nor.png); CCSprite* pressedPause=CCS

17、prite:create(CCSpriteFrameCache:sharedSpriteFrameCache()-spriteFrameByName(game_pause_pressed.png); pPauseItem=CCMenuItemImage:create();/创立CCMenuItem pPauseItem-initWithNormalSprite(normalPause,pressedPause,NULL,this,menu_selector(ControlLayer:menuPauseCallback);/载入双态图和回调函数 pPauseItem-setPosition(cc

18、p(normalPause-getContentSize().width/2+10,winSize.height-normalPause-getContentSize().height/2-10); CCMenu *menuPause=CCMenu:create(pPauseItem,NULL);/创立CCMenu,可以这么理解CCMenuItem是CCMenu的孩子 menuPause-setPosition(CCPointZero); this-addChild(menuPause,101); bRet=true; while (0); return bRet; /暂停按键的回调函数 vo

19、id ControlLayer:menuPauseCallback(CCObject* pSender) if(!CCDirector:sharedDirector()-isPaused()/如果游戏处于正常状态 /更改为恢复按钮的双态 pPauseItem-setNormalSpriteFrame(CCSpriteFrameCache:sharedSpriteFrameCache()-spriteFrameByName(game_resume_nor.png); pPauseItem-setSelectedSpriteFrame(CCSpriteFrameCache:sharedSprite

20、FrameCache()-spriteFrameByName(game_resume_pressed.png); CCDirector:sharedDirector()-pause();/暂停游戏,这是导演控制的 else/否那么 /更改为暂停按钮的双态 pPauseItem-setNormalSpriteFrame(CCSpriteFrameCache:sharedSpriteFrameCache()-spriteFrameByName(game_pause_nor.png); pPauseItem-setSelectedSpriteFrame(CCSpriteFrameCache:shar

21、edSpriteFrameCache()-spriteFrameByName(game_pause_pressed.png); CCDirector:sharedDirector()-resume();/开麦拉! 五、实训总结实训四一、实训目的与要求在游戏过程中,碰撞是必然会发生的,也是游戏的一个特色,有碰撞才会有下一步的动作出现,在此,我们对cocos2d-x中的碰撞进行一个总结,在这个实训中,要完成游戏中子弹和飞机,以及飞机同飞机之间的碰撞。二、实训环境一实训设备配置比拟高的电脑S2022二实训软件Vs2022三实训场地实训楼3005三实训准备1.准备好效果图四实训内容及过程1.实现游戏的

22、重载在GameLayer中对它进行重载,把我们每帧内要执行的动作放到update中,进行调用就可以了virtual CCObject:update(float dt);this-scheduleUpdate();2.碰撞检测 CCArray* enemy3sToDelete=CCArray:create();/创立一个CCArray,用以存放待删除的敌机,也就是此子弹击中的敌机 enemy3sToDelete-retain();/调用retain CCARRAY_FOREACH(this-enemyLayer-m_pAllEnemy3,et)/遍历所有敌机 Enemy* enemy3=(Ene

23、my*)et; if (CCRect:CCRectIntersectsRect(bullet-boundingBox(),enemy3-getBoundingBox()/检测碰撞,即矩形区域是否相交 /如果life1,移除bullet if (enemy3-getLife()1)/因为Enemy3设置了生命值为5 enemy3-loseLife(); bulletsToDelete-addObject(bullet);/把待删除子弹放入CCArray /如果life=1,移除enemy3 else if(enemy3-getLife()=1)/只剩一条命的时候,再碰撞就挂掉了 enemy3-l

24、oseLife(); bulletsToDelete-addObject(bullet);/把待删除子弹放入CCArray enemy3sToDelete-addObject(enemy3);/把待删除敌机放入CCArray score+=ENEMY3_SCORE; this-controlLayer-updateScore(score); /此时处在敌机爆炸动画阶段,敌机未消失,子弹还有打到的时机,所以不进行检测 else ; CCARRAY_FOREACH(enemy3sToDelete,et)/遍历所有此帧中碰撞死亡的敌机,必须是死亡 Enemy* enemy3=(Enemy*)et;

25、this-enemyLayer-enemy3Blowup(enemy3);/执行爆炸 enemy3sToDelete-release();/release CCARRAY_FOREACH(bulletsToDelete,bt)/遍历所有此帧中碰撞的子弹 CCSprite* bullet=(CCSprite*)bt; this-bulletLayer-RemoveBullet(bullet);/执行移除 bulletsToDelete-removeAllObjects(); bulletsToDelete-release();/release 五、实训总结实训五一、实训目的与要求在游戏场景中,增

26、加背景音乐,以及添加特殊的音效,让游戏更有吸引力,也是游戏设计中的一个环节,在这个当中,我们需要对音乐的使用时机把握到位,以及音效的产生事件的处理。要求学生选择合理的背景音乐,以及有效的特殊音效,也可以使用老师提供的音乐。二、实训环境一实训设备配置比拟高的电脑S2022二实训软件Vs2022三实训场地实训楼3005三实训准备1.准备好音乐源文件四实训内容及过程1.音乐的选择:Android:在android上CocosDenshion能支持的音频格式是对应于android.media.MediaPlayer所支持的格式。 iOS:在IOS上面Cocos2d-x的CocosDenshion所支持的格式和Cocos2d-iphone中所支持的是一样,mp3,caf是推荐的格式。 windows:.mid, .wav are supported. Note that mp3 is not supported. Marmalade:mp3 2.添加背景音乐:#include SimpleAudioEngine.h us

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论