cocos2d 高仿doodle jump 无源码

1. 游戏视频

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

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

2.向上跳的位移实现

正常情况下,不使用任何的东西,主角在板子上跳,会跳出最上面的屏幕就看不到了!没有视频中主角一直在屏幕中间的感觉。那么如何实现这样的效果呢?非常简单。

这里不得不吐槽下cocos2d, 学过Opengl 或者 DirectX的,都应该知道有Camera这么一个东西存在,2D游戏只是选择了平行投射(parallel projection)参考这篇文章《DirectX Camera》 .但3.2 之前的Camera根本不能用,3.3才加入了Camera. 如果用Camera这里会非常容易实现,也跟现实比较吻合。

1.如果使用Camera,所有板的PositionY 就定死的,越高的板,它的PositionY 就越大,主角往上跳时,主角的PositionY也不断变大。有一个Camera,它的位置跟着主角来移动就可以了。就这么简单。

2.不使用Camera,我用的是3.2的cocos2d,所以不好使用Camera,采用了移动整个Layer的实现。主角会跳出最上面的屏幕的,怎么办的?把整个Layer往下移动就可以了。

float minPositionY = 0;
void update(float dt){
	//follow the hero
	float 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 boards
        JumpBoard *lastBoard = _boardObjects.back();
        generateSomeBoards(lastBoard->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<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.主角光环和抛物线掉落

主角光环的椭圆移动,可以参考这篇文章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

时间: 2024-12-28 08:31:02

cocos2d 高仿doodle jump 无源码的相关文章

Android 完美高仿的微信源码

原文:Android 完美高仿的微信源码 源代码下载地址:http://www.zuidaima.com/share/1550463746034688.htm MrZhao只分享精品,话不多说,直接上图        - 账户buaa/123

【Android重量级】高仿大众点评源码

高仿大众点评源码   下载地址:http://url.cn/Nzj3Lc    源码简介 声明:本源码只用于个人研究使用,不可用于商业用途,由于本源码引起的纠纷皆与作者无关. 本套源码是本人在校的时候做的一个练手的列子,高仿大众点评,项目源码不算是太完善,还请专业人士指导并完善他. 源码部分没有完成,服务器部分也不是太完善,只是实现了查询方面的东西. 由于现在没有时间去优化,所以把源码发出来给新手们参考学习,代码不规范的地方还请扣扣告诉我, 我想多向大家学习,充实自己,希望大家多多提供意见让我更

【Android重量级源码】高仿大众点评源码

高仿大众点评源码   下载地址:http://url.cn/Nzj3Lc   源码简介声明:本源码只用于个人研究使用,不可用于商业用途,由于本源码引起的纠纷皆与作者无关. 本套源码是本人在校的时候做的一个练手的列子,高仿大众点评,项目源码不算是太完善,还请专业人士指导并完善他. 源码部分没有完成,服务器部分也不是太完善,只是实现了查询方面的东西. 由于现在没有时间去优化,所以把源码发出来给新手们参考学习,代码不规范的地方还请扣扣告诉我, 我想多向大家学习,充实自己,希望大家多多提供意见让我更快的

iOS高仿微信完整源码,网易爱玩APP源码等

iOS精选源码 iOS一种弹出视图效果带动画 一个快速便捷.无侵入.可扩展的动画弹框库 高仿Elk - 旅行货币转换器 iOS内分享的界面.功能一体化解决方案 使用Olami sdk实现一个语音查询股票的iOS程序 iOS高仿微信完整项目源码 分段绘制折线指示图, 点击效果 最新环信推送封装 v3.0[附代码] 仿照网易爱玩APP APP启动视频 iOS优质博客 iOS 一行代码搞定 KVO 前言发现好久没有研究.学习iOS优秀开源代码,现在大部分时间都在写业务代码, 学习其他语言及一些杂七杂八

高仿茶百源码

高仿茶百科 功能分类:社交        支持平台:Android        运行环境:Eclipse 开发语言:Java        开发工具:Eclipse        源码大小:5.60MB 下载地址:http://t.cn/R7r75M2 源码简介 在网上看到的一个高仿茶百科的源码,仔细翻了翻,发现其中还有很对地方值得参考.特拿出来和大家分享一下. 源码运行截图   

iOS新闻应用源码,高仿今日头条源码等

iOS精选源码 城市列表选择 一款非常时尚的照片选择插件 优酷播放按钮动画 BRPickerView是iOS的选择器组件,主要包括:日期选择器.时... 选择位置坐下动画Demo BAButton 图片.文字.倒计时等 git 功能最全的 button 分类 企业级完整iOS项目-<新闻来了> 较为美观的多级展开列表 高仿今日头条6.2.6 Swift 简单画板的swift实现 iOS优质博客 创建一个私有的 Pods 详解 前言骚年,你听说过组件化吗?没有?但你一定玩过乐高玩具,乐高玩具本身

分享一个源码下载网站,高仿京东商城源码下载

仿照京东商城做出的APP(仅实现了部分界面),自己开发着玩的,需要的拿去 京东商城,小试牛刀之作,与广大开发者分享,需要的拿去 http://www.devstore.cn/code/info/87.html 登陆界面 新品特惠疯狂抢购页面 京东商城项目相关服务--支付平台的选择,市场上的支付平台有支付宝,银联,机锋支付,360开放平台,有米,豌豆荚,中国移动应用,微信,微派,百度钱包等等,在如此多的支付平台里面你的项目该集合哪几个支付平台呢,推荐你关注参考相关资料DevStore这个平台,有关

盘点2014年不可错过的十大高仿源码

"2014你任性了吗?"央视推出街头采访第二季"你任性了吗?",面对这种状况我也是醉了,任性?,我还是好好敲我的代码吧.话说再过两天就要2015年了,2014年的存货赶紧拿出来咯,DevStore为你盘点2014年不可错过的八大高仿源码,速速装口袋咯. 高仿大众点评源码 高仿大众点评,服务端+客户端,服务端可以实现查询功能. 下载地址:http://www.devstore.cn/code/info/304.html 高仿茶百科 高仿茶百科,包含茶叶相关知识,饮茶等

高仿精仿饭否客户端应用源码

今天给大家介绍一款非常不错的饭否客户端应用源码,该应用跟现实中的饭否应用功能差不错,界面也很类似,基本实现了饭否应用的功能,喜欢的朋友可以下载学习看看,希望大家功能喜欢. 应用预览图:<ignore_js_op> <ignore_js_op> <ignore_js_op> FanfouData.cs:下载解析返回的数据,数据格式为xml FanfouStatus.cs:返回"随便看看"数据的模型 FnafouUser.cs:饭否用户的数据模型 WP7