cocos2d 高仿doodle jump 无源代码
1. 游戏视频
主角眼熟吗?没错,上次跑酷游戏中的“30”来Jump了,有三种道具。主角光环,竹蜻蜓。翅膀; 有两种怪物,螃蟹和鸟; 有5种板子。点击屏幕,30会把它的嘴巴3给发射出去。能够攻击怪物。
上次的跑酷參考《cocos2d 简单高仿天天跑酷游戏》 。苹果已经审核通过...但做的很差,兴许有时间再更新。后面考虑会出很多其它的该主角游戏。
事实上蛮讨厌"高仿"这两个字的,争取下一款游戏有很多其它原创部分。
2.向上跳的位移实现
有一个Camera,它的位置跟着主角来移动就能够了。
就这么简单。
float minPositionY = 0;
void update(float dt){//follow the herofloat nextPositionY = VISIBLE_HEIGHT / 2 - hero->getPositionY();if(nextPositionY < minPositionY){minPositionY = nextPositionY;this->setPositionY(minPositionY);}
}
看起来比較简单,假设是主角掉下屏幕最底下,有一个坠落感觉,逻辑上又比較麻烦了。还是用Camera的比較好。
3.板子生成的逻辑
首先是板子连续生成的逻辑,不可能一次生成几十个板子。反正屏幕之上和屏幕之下用户都是看不到的,也就是说10几个板子。整个游戏就够用了。到后面。10个都不用。
正常的update是一秒中运行60次。我们须要整一个慢一点的定时器,这样不会太影响性能。
schedule(schedule_selector(GameObjectsLayer::createAndRemoveObjects), 0.064);。专门在里面创建板和移除不须要的板子。
deque<JumpBoard*> _boardObjects;
void generateSomeBoards(const int& lastPositionX,int startPosition,const int& count);
void createAndRemoveObjects(float dt){if(_pause == true){return;}if(_boardObjects.size() <= 12){//generate some boards if we only have few boardsJumpBoard *lastBoard = _boardObjects.back();generateSomeBoards(lastBoard->getPositionX(), lastBoard->getPositionY() + getGeneratorHigh(),5);}//remove unused boardsJumpBoard* firstBoard = _boardObjects.front();if(hero->getPositionY() - firstBoard->getPositionY() > 600){firstBoard->removeFromParent();_boardObjects.pop_front();}}
再简单用语言来说下上面中没有给出具体代码的generateSomeBoards。
这里游戏的玩法就是怎样控制生成板子。我必须承认这块做的还不好。
typedef enum{kNormalBoard, //0kCloudBoard, //1kMoveBoard, //2kMoveLttleBoard, //3kSpringBoard //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<int>,然后用random_shuffle,进行洗牌。
会依据当前的hero高度来选择不同的数组。当index移到最后一个时候,就归0。再次洗牌。
int getBoardTypeDueToFloorNum(){int floorCount = getFloorCount();int result = 0;if(floorCount <= 2){if(_levelIndex >= _level1.size()){_levelIndex = 0;random_shuffle(_level1.begin(), _level1.end());}result = _level1[_levelIndex];++_levelIndex;return result;}else if(floorCount > 2 && floorCount <= 10){if(_levelIndex >= _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.主角光环和抛物线掉落
仅仅用到了左边红色的部分。
6. 其它
这里就不再赘述。
有真正游戏的感觉。
http://www.waitingfy.com/archives/1358
转载于:https://www.cnblogs.com/lcchuguo/p/5271725.html
cocos2d 高仿doodle jump 无源代码相关推荐
- cocos2d 高仿doodle jump 无源码
1. 游戏视频 主角眼熟吗?没错,上次跑酷游戏中的"30"来Jump了,有三种道具,主角光环,竹蜻蜓,翅膀: 有两种怪物,螃蟹和鸟: 有5种板子.点击屏幕,30会把它的嘴巴3给发射 ...
- android仿微信聊天功能,Android高仿微信聊天界面代码分享
微信聊天现在非常火,是因其界面漂亮吗,哈哈,也许吧.微信每条消息都带有一个气泡,非常迷人,看起来感觉实现起来非常难,其实并不难.下面小编给大家分享实现代码. 先给大家展示下实现效果图: OK,下面我们 ...
- php写的微信聊天界面,Android_Android高仿微信聊天界面代码分享,微信聊天现在非常火,是因其 - phpStudy...
Android高仿微信聊天界面代码分享 微信聊天现在非常火,是因其界面漂亮吗,哈哈,也许吧.微信每条消息都带有一个气泡,非常迷人,看起来感觉实现起来非常难,其实并不难.下面小编给大家分享实现代码. 先 ...
- android 微信高仿,Android高仿微信聊天界面代码分享
微信聊天现在非常火,是因其界面漂亮吗,哈哈,也许吧.微信每条消息都带有一个气泡,非常迷人,看起来感觉实现起来非常难,其实并不难.下面小编给大家分享实现代码. 先给大家展示下实现效果图: OK,下面我们 ...
- Android 仿doodle jump小游戏
这个游戏的逻辑主要在上升和下降以及触碰原理 图片: 4eb3cc2601e30b38736028f1ed4ba31.jpg 20190523_094047.gif 没有做开始游戏 暂停游戏 和结束游戏 ...
- Android高仿雅虎天气(两)---代码结构分析
版本已经升级到1.0.1 源码地址: GitHub:https://github.com/way1989/WayHoo OsChina:http://git.oschina.net/way/WayHo ...
- Android之高仿雅虎天气(二)---代码结构解析
版本已升级至1.0.1 源码地址: GitHub:https://github.com/way1989/WayHoo OsChina:http://git.oschina.net/way/WayHoo ...
- 2016年最经典的高仿系列源码打包下载4.84G
│ JAVAapk.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2015.11.04更新.txt ...
- Flutter高仿微信-第54篇-群聊-邀请好友
Flutter高仿微信系列共59篇,从Flutter客户端.Kotlin客户端.Web服务器.数据库表结构.Xmpp即时通讯服务器.视频通话服务器.腾讯云服务器全面讲解. 详情请查看 Flutter ...
最新文章
- 40 个 SpringBoot 常用的注解,你知道几个?
- 人工智能离我们有多远/近?
- 有限服务器延时计算_新建三座超级数据中心,增超百万台服务器 阿里云数据中心选址有何逻辑?...
- 深度学习、机器学习与NLP的前世今生
- 0-MyBatis简介
- HDU-1027 组合数 STL-next_permutation
- centos web 访问mysql_Centos7安装Web服务器--Mysql5.7.12安装
- c语言指针改良,重新认识C语言指针(上)(示例代码)
- mysql 索引 内存_mysql索引【第三篇】
- QTableWidget与QTableView的区别
- 在html中写三角,css3怎么写三角形?
- 我的手机,被“探针”了吗?
- *Algs4-2.4.23Multiway的堆(未解决)
- git push 出现 you are not allowed to upload merges 错误提示
- 盒马销量预测核心算法的技术演进
- 相册批量下载 前版本为v3.5 支持:雅虎相册、谷歌相册、网易相册、yupoo相册、百度相册、QQ相册
- # Windows下关于安装Geany编辑器过程中的一点小发现(可能对初次安装的人有用)
- 真正的程序员的工作与生活应该是这样的
- Chrome浏览器完美保存整个网页的两种方式
- 我的物联网项目(五)下单渠道
热门文章
- 练习9-15:彩票中奖率分析(Python变成从入门到实践学习)
- Uncaught ReferenceError: UE is not defined at zh-cn.js:8
- BGP联动 + nqa联动
- 用jquery实现隐藏列表表单的显示关闭切换以及Ajax方式修改提交对应的那一行的修改内容。
- Enigma加解密算法实现C++
- day02-HTML的基本标签
- 小学教师计算机培训课程感言,小学教师教学技能培训心得体会
- 打造室内 “店铺级” 定位的 Petal Maps Platform,正在重塑数字生活新范式
- 常用软件------系统必备软件
- 025-2018-1011 re模块