[cocos2d 开发]看我怎么山寨 跳跃忍者 !!!ninjump 1
2012-12-31 12:15
344 查看
cocos2d 开发]看我怎么山寨 忍者跳跃 !!!
其实中国的游戏开发者不写游戏!这里包含各种内涵的意思 ...
如今山寨成风,今个儿开始山寨 一款从iphone上,跨平台到android 很火的游戏 . ninjump (忍者跳跃).
要山寨 先搞清楚别人是怎么开发的 ,能否直接获取到别人的素材?! 这个很关键,因为中国的开发者,一个穷屌丝往往兼顾几个人的使用:游戏策划,游戏运营,游戏编程,游戏美工,游戏音效 等等岗位. 结果出来,各种排斥,各种难赚钱,最后走上加广告的道路,各种推送,各种被骂...如何之苦b,就不是这里要讨论的话题了.刚刚说到
游戏素材,最好能解压apk,拿到直接的png图片,有的 是pk文件,就有些麻烦,别人打包了比较难窃取,今天不讨论.自己下去研究下.
其次要搞清楚别人的开发技术 ,所以游戏 一般有一个技术总监,来指导游戏编程. 解压后ninjump.apk后,你就会发现,里面 目录其实很清楚 : \assets\ 下面放着各种 : music ;scripts;sounds;textures 等 ;通过名字大概就知道
图片纹理在哪,声音在哪;
scripts 是放在全是lua文件.可知,它是采用 lua脚本编程,java很少的代码, 是c++的引擎库 和lua 脚本实现游戏界面.
而且它能很好的跨平台,只要再各各平台实现 引擎库,lua 都不用变 直接上,很是方便. 开源的引擎是有很多的.
今个儿选择 cocos2d 来山寨它 .
先上山寨截图.
![](http://img.my.csdn.net/uploads/201212/31/1356927178_7307.jpg)
![](http://img.my.csdn.net/uploads/201212/31/1356934139_1636.jpg)
游戏如今分几个模块来开发:
hero 英雄sbHero : climber 攀爬者, 向上攀爬. 处理各种 动画脚本,碰撞反应
bg 背景sbBackGround : 背景图,背景滚动,这里用到 2个 CCSpriteBatchNode 来循环 向下滚动 .
动画管理器AnimationManager: 用来管理纹理缓冲,获得动画.(所有的动画都从这里获取得)
bird sbBird : 鸟儿障碍物
squirrel sbSquirrel : 松鼠障碍物
star 飞镖 sbStar : 飞镖障碍物
bomb sbBomb
: ***障碍物.
level 等级 : 最关键的 一个类,管理 游戏背景中障碍物的出现,已经碰撞检测. 粒子效果的产生.游戏的平很全靠它.
关于动画管理器AnimationManager: 动画管理很重要,包含纹理CCTextureCache.
动画使用呢,很简单 .这个实现左右jump . 由于纹理 只有一个方向.通过 heroSprite->setFlipX(true);来设置精灵左右倒置.
JUMP动画创建完成,调用完成后,走 Action_done !
根据往左跳还是往右跳,分别是实现 jump 动画 后的 向上爬 的动画.
这样 通过 动画管理器,实现一个左右跳动后,继续向上爬的过程.
如此,继续向动画管理器中加入其他动画实例,在需要的里面调用. 比如bird 怎么飞. 松鼠应该是在 晒衣服绳子上跳.
关于cocos2d 的粒子系统是我要说的.
这么多 确实已经非常丰富了,配合 例子编辑器非常方便.
但是我想到的是, 粒子交互的问题 ,当 鸟儿碰到hero,此刻要播放 粒子效果动画.cocos 非常痛苦的是 一个child 粒子系统 只能加入一次 ,就算remove 再加也不行; 那么我每次播放粒子动画 都需要 new这个动作,但是我又不能立刻释放,因为有的动作还没做完,粒子系统要播放段时间, 所以 这里需要 调用 autorelease ,将其加入到回首的队列中去. 如果不调用,粒子系统将会再触发的时候 消耗比较多的内存,时间久了就必然崩溃.
这次就将 目前游戏 apk 程序放上去给大家下载: http://download.csdn.net/detail/icemanyandy/4966444
其实中国的游戏开发者不写游戏!这里包含各种内涵的意思 ...
如今山寨成风,今个儿开始山寨 一款从iphone上,跨平台到android 很火的游戏 . ninjump (忍者跳跃).
要山寨 先搞清楚别人是怎么开发的 ,能否直接获取到别人的素材?! 这个很关键,因为中国的开发者,一个穷屌丝往往兼顾几个人的使用:游戏策划,游戏运营,游戏编程,游戏美工,游戏音效 等等岗位. 结果出来,各种排斥,各种难赚钱,最后走上加广告的道路,各种推送,各种被骂...如何之苦b,就不是这里要讨论的话题了.刚刚说到
游戏素材,最好能解压apk,拿到直接的png图片,有的 是pk文件,就有些麻烦,别人打包了比较难窃取,今天不讨论.自己下去研究下.
其次要搞清楚别人的开发技术 ,所以游戏 一般有一个技术总监,来指导游戏编程. 解压后ninjump.apk后,你就会发现,里面 目录其实很清楚 : \assets\ 下面放着各种 : music ;scripts;sounds;textures 等 ;通过名字大概就知道
图片纹理在哪,声音在哪;
scripts 是放在全是lua文件.可知,它是采用 lua脚本编程,java很少的代码, 是c++的引擎库 和lua 脚本实现游戏界面.
而且它能很好的跨平台,只要再各各平台实现 引擎库,lua 都不用变 直接上,很是方便. 开源的引擎是有很多的.
今个儿选择 cocos2d 来山寨它 .
先上山寨截图.
![](http://img.my.csdn.net/uploads/201212/31/1356927178_7307.jpg)
![](http://img.my.csdn.net/uploads/201212/31/1356934139_1636.jpg)
游戏如今分几个模块来开发:
hero 英雄sbHero : climber 攀爬者, 向上攀爬. 处理各种 动画脚本,碰撞反应
bg 背景sbBackGround : 背景图,背景滚动,这里用到 2个 CCSpriteBatchNode 来循环 向下滚动 .
动画管理器AnimationManager: 用来管理纹理缓冲,获得动画.(所有的动画都从这里获取得)
bird sbBird : 鸟儿障碍物
squirrel sbSquirrel : 松鼠障碍物
star 飞镖 sbStar : 飞镖障碍物
bomb sbBomb
: ***障碍物.
level 等级 : 最关键的 一个类,管理 游戏背景中障碍物的出现,已经碰撞检测. 粒子效果的产生.游戏的平很全靠它.
关于动画管理器AnimationManager: 动画管理很重要,包含纹理CCTextureCache.
bool AnimationManager::initAnimationMap() { CCAnimationCache::sharedAnimationCache()->addAnimation(createNPCAnimation(), "jumping"); /* 代码 ... 忽略20行 */ return true; }
CCAnimation* AnimationManager::createNPCAnimation() { CCTexture2D *playerRunTexture = CCTextureCache::sharedTextureCache()->addImage("enemies/jumping.png"); CCAnimation* animation = CCAnimation::create(); for( int i = 0;i < 5;i++){ animation->addSpriteFrame(CCSpriteFrame::create(playerRunTexture, cocos2d::CCRectMake(100*i, 0, 100, 100))); } for( int i = 0;i < 5;i++){ animation->addSpriteFrame(CCSpriteFrame::create(playerRunTexture, cocos2d::CCRectMake(100*i, 100, 100, 100))); } animation->setDelayPerUnit(0.4f/10 ); animation->setRestoreOriginalFrame(false); return animation; }
动画使用呢,很简单 .这个实现左右jump . 由于纹理 只有一个方向.通过 heroSprite->setFlipX(true);来设置精灵左右倒置.
case HERO_ACTION_JUMP_L: if( spState != HERO_ACTION_RUN_R ) break; //heroSprite->setFlipX(false); action2 = CCMoveTo::create(0.4f, CCPointMake(HERO_OFFX, HERO_OFFY)); action = CCSpawn::create(sAnimationMgr->createAnimate("jumping") ,action2,NULL); action4 = CCCallFuncND::create(this,callfuncND_selector(sbHero::Action_done), (void *)act); action3 = CCSequence::create( action,action4,NULL ); heroSprite->runAction( action3 ); spState = HERO_ACTION_JUMP_L; break;以上为代码中一部分.使用其动画!
JUMP动画创建完成,调用完成后,走 Action_done !
根据往左跳还是往右跳,分别是实现 jump 动画 后的 向上爬 的动画.
void Action_done( void *ad ,int act ) { switch( act ) { case HERO_ACTION_JUMP_L: heroSprite->setPosition(ccp(HERO_OFFX,HERO_OFFY)); heroSprite->setFlipX(false); Start( HERO_ACTION_RUN ); spState = HERO_ACTION_RUN_L; break; case HERO_ACTION_JUMP_R: heroSprite->setPosition(ccp(SCREEN_SIZE_W-HERO_OFFX-40,HERO_OFFY)); heroSprite->setFlipX(true); Start( HERO_ACTION_RUN ); spState = HERO_ACTION_RUN_R; break; case HERO_ACTION_RUNON_SQL: Action_done(NULL,spState); break; /* 代码 ... 忽略20行 */
这样 通过 动画管理器,实现一个左右跳动后,继续向上爬的过程.
如此,继续向动画管理器中加入其他动画实例,在需要的里面调用. 比如bird 怎么飞. 松鼠应该是在 晒衣服绳子上跳.
关于cocos2d 的粒子系统是我要说的.
这么多 确实已经非常丰富了,配合 例子编辑器非常方便.
但是我想到的是, 粒子交互的问题 ,当 鸟儿碰到hero,此刻要播放 粒子效果动画.cocos 非常痛苦的是 一个child 粒子系统 只能加入一次 ,就算remove 再加也不行; 那么我每次播放粒子动画 都需要 new这个动作,但是我又不能立刻释放,因为有的动作还没做完,粒子系统要播放段时间, 所以 这里需要 调用 autorelease ,将其加入到回首的队列中去. 如果不调用,粒子系统将会再触发的时候 消耗比较多的内存,时间久了就必然崩溃.
case ENEMY_ACTION_HIT: if( hit_count == 0){ if(spplc) spplc->autorelease(); spplc = new CCParticleSystemQuad(); spplc->initWithFile("particles/bomb.plist"); spplc->setPosition(20,20); spplc->setAutoRemoveOnFinish(true); spobj->addChild(spplc); spobj->setTexture(NULL); } hit_count++;
这次就将 目前游戏 apk 程序放上去给大家下载: http://download.csdn.net/detail/icemanyandy/4966444
相关文章推荐
- Cocos2d-x开发的Android应用怎么添加插屏广告
- cocos2d-x案例开发大全 几何跳跃源码解析及交叉编译再现
- Cocos2d-x开发的Android应用怎么加入插屏广告
- 18、Cocos2dx 3.0游戏开发找小三之cocos2d-x,请问你是怎么调度的咩
- 18、Cocos2dx 3.0游戏开发找小三之cocos2d-x,请问你是怎么调度的咩
- 作为新手,怎么学Cocos2d-x移动游戏开发
- 18、Cocos2dx 3.0游戏开发找小三之cocos2d-x,请问你是怎么调度的咩
- cocos2d-XNA游戏开发之山寨《Flapy Bird》(一)
- 【iOS-Cocos2d游戏开发之二十二 】CCSpeed实现CCAnimate动画进行时设置慢动作以及设置游戏加减速进行(塔防游戏必备)!
- 【iOS开发-1】AppIcon图标的尺寸,绘制,命名规则以及怎么回到HOME界面查看效果?
- cocos2d-x-3.12 打包android apk时 怎么修改已经配置好的setup.py参数 和解决 XX不是一个有效的 Android 目标平台 错误
- 【Cocos2d-x游戏引擎开发笔记(8)】在ubuntu上将游戏发布到Android
- windows环境下搭建Cocos2d-X开发环境
- 怎么在微信公众号使用ASP.net开发自定义菜单
- 数字货币要怎么开发
- cocos2d-x开发之编译参数配置
- 不美翻怎么开发!Ubuntu 16.04 LTS深度美化!(2017年度定稿版)
- [cocos2dx-html5]手把手,快速搭建 Cocos2d-HTML5 开发调试环境
- cocos2d-x-3.2塔防游戏开发3:动态的从配置文件中设置怪物的关卡,总波数,初始化钱数
- 实习小白::(转) Cocos2d-x 3.0开发(五)关联程序逻辑与cocoStudio导出文件