展会信息港展会大全

cocos2d 高仿doodle jump 无源码
来源:互联网   发布日期:2015-09-27 15:23:57   浏览:1195次  

导读: 1. 游戏视频 主角眼熟吗?没错,上次跑酷游戏中的“30”来Jump了,有三种道具,主角光环,竹蜻蜓,翅膀; 有两种怪物,螃蟹和鸟; 有5种板子。点击屏幕,30会把它的嘴巴3给发射出去,可...

1. 游戏视频

主角眼熟吗?没错,上次跑酷游戏中的“30”来Jump了,有三种道具,主角光环,竹蜻蜓,翅膀; 有两种怪物,螃蟹和鸟; 有5种板子。点击屏幕,30会把它的嘴巴3给发射出去,可以攻击怪物。上次的跑酷参考《cocos2d 简单高仿天天跑酷游戏》 ,苹果已经审核通过...但做的很差,后续有时间再更新。后面考虑会出更多的该主角游戏。

其实蛮讨厌"高仿"这两个字的,争取下一款游戏有更多原创部分。

2.向上跳的位移实现

vcfSu9ax1NrGwcS71tC85LXEuNC+9aGjxMfDtMjnus7Ktc/W1eLR+bXE0Ke5+8TYo7+3x7OjvPK1paGj1eLA77K7tcOyu83CstvPwmNvY29zMmQsINGnuf1PcGVuZ2wgu/LV3yBEaXJlY3RYtcSjrLa806a4w9aqtcDT0ENhbWVyYdXiw7TSu7j2tqvO97Tm1NqjrDJE087Pt9a7ysfRodTxwcvGvdDQzbbJ5KOocGFyYWxsZWwgcHJvamVjdGlvbqOpss6/vNXixqrOxNXCobZEaXJlY3RYIENhbWVyYaG3IC61qzMuMiDWrsewtcRDYW1lcmG4+bG+srvE3NPDo6wzLjOyxbzTyOvBy0NhbWVyYS4gyOe5+9PDQ2FtZXJh1eLA77vht8ezo8jd0tfKtc/Wo6zSsrj6z9bKtbHIvc/Ox7rPoaMxLsjnufvKudPDQ2FtZXJho6zL+dPQsOW1xFBvc2l0aW9uWSC+zbaoy8C1xKOs1L2437XEsOWjrMv8tcRQb3NpdGlvblkgvs3UvbTzo6zW973HzfnJz8z4yrGjrNb3vce1xFBvc2l0aW9uWdKysru2z7HktPOho9PQ0ru49kNhbWVyYaOsy/y1xM671sO4+tfF1ve9x8C00sa2r77Nv8nS1MHLoaO+zdXiw7S88rWloaMyLrK7yrnTw0NhbWVyYaOsztLTw7XEysczLjK1xGNvY29zMmQsy/nS1LK7usPKudPDQ2FtZXJho6yyydPDwcvSxrav1fu49kxheWVytcTKtc/WoaPW973Hu+HM+LP21+7Jz8PmtcTGwcS7tcSjrNT1w7Sw7LXEo7+w0dX7uPZMYXllcs35z8LSxravvs2/ydLUwcuhozxwcmUgY2xhc3M9"brush:java;">float minPositionY = 0;

void update(float dt){

//follow the hero

float nextPositionY = VISIBLE_HEIGHT / 2 - hero->getPositionY();

if(nextPositionY setPositionY(minPositionY);

}

}看起来比较简单,如果是主角掉下屏幕最底下,有一个坠落感觉,逻辑上又比较麻烦了。还是用Camera的比较好。3.板子生成的逻辑

最块又比较麻烦了。首先是板子连续生成的逻辑,不可能一次生成几十个板子,反正屏幕之上和屏幕之下用户都是看不到的,也就是说10几个板子,整个游戏就够用了。到后面,10个都不用。正常的update是一秒中执行60次。我们需要整一个慢一点的定时器,这样不会太影响性能,schedule(schedule_selector(GameObjectsLayer::createAndRemoveObjects), 0.064);,专门在里面创建板和移除不需要的板子。deque _boardObjects;

void generateSomeBoards(const int& lastPositionX,int startPosition,const int& count);

void createAndRemoveObjects(float dt){

if(_pause == true){

return;

}

if(_boardObjects.size() getPositionX(), lastBoard->getPositionY() + getGeneratorHigh(),5);

}

//remove unused boards

JumpBoard* firstBoard = _boardObjects.front();

if(hero->getPositionY() - firstBoard->getPositionY() > 600){

firstBoard->removeFromParent();

_boardObjects.pop_front();

}

}

再简单用语言来说下上面中没有给出详细代码的generateSomeBoards。游戏要考虑的东西很多:1.刚开始的时候两个板之间的距离要短些,看起来会密些,这样游戏会容易上手些,两个板之间的距离会随着主角的变高而增大。2.刚开始的时候生成板的类型要简单些,我这里只有最两种类型,到后面才会出现各种类型的板。我现在越来越意识到,如果一个游戏的主要玩法能让不懂程序逻辑的策划很容易修改的话,这个游戏写的就还不错。这里游戏的玩法就是如何控制生成板子。我必须承认这块做的还不好。typedef enum{

kNormalBoard,//0

kCloudBoard,//1

kMoveBoard,//2

kMoveLttleBoard,//3

kSpringBoard//4

}JumpBoardType;

int level1[] = {0,0,0,0,0,0,0,0,0,0,1,1,1};

int level2[] = {0,0,0,0,0,0,0,0,0,0,1,1,2,3,4};

这里简单有两个数组,后面会用它们初始化两个vector,然后用random_shuffle,进行洗牌。会根据当前的hero高度来选择不同的数组。当index移到最后一个时候,就归0,再次洗牌。int getBoardTypeDueToFloorNum(){

int floorCount = getFloorCount();

int result = 0;

if(floorCount = _level1.size()){

_levelIndex = 0;

random_shuffle(_level1.begin(), _level1.end());

}

result = _level1[_levelIndex];

++_levelIndex;

return result;

}else if(floorCount > 2&& floorCount = _level2.size()){

_levelIndex = 0;

random_shuffle(_level2.begin(), _level2.end());

}

result = _level2[_levelIndex];

++_levelIndex;

return result;

}else{

//无限模式

}

}

当然后面的无限模式更加复杂点,我搞了5种不同类型的数组进行洗牌。这里不再赘述。4.道具和怪物生成位置

道具和怪物生成位置我就简单处理了,每隔几个屏幕高度就放置一个。//typedef enum{

//kHelicopterItem,//0

//kFlyItem,//1

//kShortItem,//2

//kLongItem,//3

//kDefenceBall//4

//}EatItemType;

int allEatItemType[] = {4,4,4,0,0,1};

为了让不同道具出现概率不一样,又用了跟上面板子类似的逻辑。怪物这里就2种,就50%概率会生成不同怪物。Doodle jump这块做的变态的好,一般怪物出现之前会有杀死怪物或者躲避怪物的道具出现。5.主角光环和抛物线掉落

主角光环的椭圆移动,可以参考这篇文章《cocos2d 绕椭圆移动》。还有一个是使用过后道具的掉落轨迹。这块第一次玩Doodle jump就给我带来了惊喜,竹蜻蜓或者火箭,时间到后,完美的扔掉,处理的非常自然和有趣。实现起来跟上面的椭圆移动类似。就是数学用的抛物线,只是这个是开口向下的。只用到了左边红色的部分。我用的公式是x = t * -400,y = x * x * -0.02 ( x= [0, -400] )。update中,t = [0, 1],代入这个公式就可以了。6. 其他

其他像道具生成的位置比较讲究,最后添加到板子中去,这样板子移动,就会跟着移动了,会自然点。无论是主角碰上怪物或者主角的嘴巴碰上怪物,怪物都会旋转地往那个方向飞出去,这个效果非常好,可以简单地计算下两个点的角度,给怪物一个速度属性,在update的每一帧中进行移动。主角的嘴巴飞出去还会飞回来,飞回来的时候,因为主角的位置一直变化的,所以也要在update的每一帧中,不断改变位置,离主角越来越近,像飞机的跟踪导弹。这里就不再赘述。感觉Cocos2d-x 3.2这块重力感应Accelerometer控制的似乎有问题,在这个游戏中偶尔会失控,我还不知道发生的原因和规律,非常头痛。还有游戏的速度,看起来都是60帧,但速度偶尔会有区别。这些高仿的游戏我想不太可能有好的市场,只能通过它们积累经验来做真正原创游戏。不过做这些小游戏比那些网络游戏有趣些。有真正游戏的感觉。

http://www.waitingfy.com/archives/1358

赞助本站

人工智能实验室
AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港