《一个都不能死》游戏设计及实现

声明:本文是本人在网上看视频后作出的作品,并非真实原创(动画部分自己实现的,总结自己总结的),感谢一下勇于分享的人,你们的付出也是激励我们前进的动力,谢谢!!!此致敬礼(哈哈哈,扯系列之逗X生活欢乐多!)

下面开始正文:

《一个都不能死》游戏的设计及说明:

GameScen        :继承自 Layer

创建 GameController  传过去 当前layer 和 Y坐标

创建一个集合,gcs 存放所有创建的 GameController 对象,进行碰撞检测

设置两个监听事件:

1. 碰撞监听

auto listen = EventListenerPhysicsContact::create();

listen->onContactBegin =[=](PhysicsContact &contact){

Director::getInstance()->replaceScene(GameOver::creteScene());

log("哇塞!!,我撞到了哎");

return true;

};

//分发事件

Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listen,this);

2. touch监听

//添加touch事件

auto listener= EventListenerTouchOneByOne::create();

listener->onTouchBegan = [=](Touch *t,Event *e){

for (auto it = gcs.begin();it!=gcs.end();it++){

if ((*it)->hitTestPoint(t->getLocation())){

(*it)->onUserTouch();

break;

}

}

return true;

};

Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener,this);

设置一个定时器:

void GameScene::update(float t){

for (auto it = gcs.begin();it!=gcs.end();it++ ){

(*it)->onupdate(t);

}

}

Block :继承自 Sprite
障碍物

设置 随机宽高,出屏幕删除

设置颜色,setTextureRect()为其制定区域

设置contentSize();

setPhysicsBody(PhysicsBody::createBox(size));//指定 物理 body   必须!!!

getPhysicsBody()->setContactTestBitmask(1);//设置碰撞标识,默认是不检测碰撞的   //设置参与碰撞

getPhysicsBody()->setDynamic(false);//默认是动态物体,受重力的影响,如果不设置会把小人 堵在那里!!

回调函数让 木块一直向左走,出屏幕清除

Edge : 继承自 Node
添加边界框    防止 小人 下落出屏幕

Size size = Director::getInstance()->getVisibleSize();

//创建边界框

setPhysicsBody(PhysicsBody::createEdgeBox(size));

setContentSize(size);

GameOver :继承自 LayerColor       结束的界面 (有一个label 一个 Menu 知识提醒的作用)  但是这里设置点击 屏幕的时候就退出了

此处省略 20 行代码。。。。。。  呵呵

GameController  :继承自  Ref  这里面是主要的设计的关键,因为要创建个数不定的小人,在 GameScene中 向 GameController中传递 layer 和  位置 就可以了

所以在这里要重写 create、init 参数为 (Layer *layer,Float postion ) 方法

这里主要是创建:

边框

Hero

地板:

auto ground = Sprite::create();//这个奏是一个精灵,嘚瑟

设置颜色 //个人比较喜欢黄色。。。。。。3B 喔

setTextureRect设置区域

位置

Hero    : 继承自  Sprite ,因为小人要运动,所以在 GameController中创建的时候要传进来 一个plist文件,通过下面的语句创建

重写的create方法:

Hero *Hero::create(std::string fileName){

Hero *hero = new Hero();

if(hero && hero->init(fileName)){

hero->autoRealease();

return hero;

}

CC_SAFE_DELETE(hero);

hero= null;

return hero;

}

重写的init方法:

Hero *Hero::init(std::string fileName){

if(!Sprite::init()){

return  false;

}

//根据 传进来的文件创建 动画

SpriteFrameCache::getInstance()->addSpriteFramesWithFile(fileName);

Animation *ani = Animation::create();

for(int i =0;i<4;i++){

std::string strName = StringUtily::Formate("majinajie%d.png",i);

SpriteFrame *sp = SpriteFrameCache::getinstance()->addSpriteFrameByName(strName);

ani->addSpriteFrame(sp);

}

ani->setDelayPerUnit(0.1);

ani->setLoops(-1);

auto amt = Animate::create(ani);

this->runAction(amt);

return true

}

getPhysicsBody()->setContactTestBitmask(1);//设置碰撞标识,默认是不检测碰撞的

以上基本就是我总结的,有不完善的地方,由于时间原因,只是出了个模型,以后有时间会完善,下面 附截图和源码下载地址:  http://pan.baidu.com/s/1eQFzNj0

时间: 2024-10-14 00:40:51

《一个都不能死》游戏设计及实现的相关文章

游戏设计杂谈-心态努力、清醒、不抱怨(完)(重点)

给新人的三个忠告. 6.1.1. 努力做<HOLO>的团队,一年半的时间里全住在公司里.除了睡觉,就是干活儿.日本某个程序员,因为连续加班时间过长,眼睑掉了下来.巨人做<征途>的团队,经常夜里4点下班,早晨正常上班.三年只休息了三天(包括春节和周末全在上班).广州所有的页游团队,正常工作时间均为朝9晚9……这还不是加班.事实上是,有一半儿以上的时间,他们是远超这个时间的.……游戏编程网www.cgzhw.com欢迎大家访问获取更多游戏编程相关技术文章!无论是在中国,还是在全世界:拼

2015-04-08---cocos2dx一个都不能死(含源码)

不知不觉今天又这个点了,今天应该早点睡啊. 昨天没写东西,就是因为睡得早啊,结果忘了,今天补上,昨天终于把一个都不能死写完了,慢慢弄吧,总之这个方面我们慢慢来,今天来共享源代码了, 源代码下载地址(点击下载) 上面的就是链接啦,今天在写打飞机,明天写好了,继续喝大家分享啊

unity3f游戏开发之游戏设计中运营重用体系

游戏设计中,运用重用体系重用资源包括有以下几个设计目的: 1).方便玩家识别 为了方便玩家识别某一类游戏中的要素,而采用的设计目的.如某种某种动物的皮毛的道具图标.为了区分不同,除了基本图素相同外,不同之处只是以变换颜色和更改名称加以区分,这样可以方便玩家快速识别图标. 2).降低客户端的容量 游戏中最占用硬盘空间的,其实是大量的资源,如模型文件.贴图等美术资源文件.为了降低客户端的容量,开发者除了要采用压包技术进行资源压包外,在设计的过程中,设计师还要考虑到客户端容量大小的问题(特别是某些2D

MMORGP大型游戏设计与开发(客户端架构 part1 of vegine)

重写有些核心接口的时候,其实遇到了许多的问题,甚至一度的想过要放弃,但是最终还是坚持了下来.在客户端提供的这些接口中,可以清晰的看到客户端所依赖的各种模块的支持,以及各自之间的一些关联.下面只是介绍了vengine(微引擎)接口的基础模块框架,所谓的接口即对象设计中常见的Interface,为一个框架提供了清晰的规范支持. VEGINE FRAMEWORK 功能实现 该接口已全部实现,具体的实例只需要继承接口封装即可.上图只为简单的模块介绍,其实每个接口都有每个接口其特别的用处,这一点会在接下的

游戏设计中的道德

最近一直在思考一些关于游戏设计方面的问题.入行已经两年了,以前跟所有刚入行的朋友一样,一直想着怎么从自己设计的游戏中赚钱.怎么让玩家为我的劳动成果买单.当然,我并不是说这样不好,因为只要形成一个良性的循环,优秀的游戏才会持续不断的出现,君不见,几年前国内还是有很多优秀的单机游戏的,但是由于破解的存在,以及中国人在几年前还有着"我都花钱买了电脑了,难道软件还要钱吗?更别提游戏了."这些众所周知的原因,现在中国的市场上已经很难看到新的优秀单机游戏的出现了,还好手游平台拓宽了国内的游戏市场,

白--留白与游戏设计

我所谓之白,非颜色之白,乃设计之白,思想之白也. 我对白的理解得益于对日本传统艺术与现代设计的些许了解,前几日偶得日本设计业前辈原研哉先生的一本书<白>.阅后颇有所思,不禁联想至游戏行业.白,也可称间或空.是日本艺术创造中一直沿承的一种创作思维.空不是无,而是留给人们想象的空间,以自我的感受体会填充空,仿佛自己与艺术品融为一体,这也算是艺术至高境界之一了. 举两例也许可使白之意更为真切.其一,日本桃山时代画家长谷川等伯的<松林图>,这幅水墨作品中,稀疏错落的松木三三两两的布局在白色

怎样设计一个好玩的游戏——游戏设计的艺术

前言: 一个好玩的游戏,就是要让玩家在玩游戏的过程中感到愉快的游戏体验.游戏品质一般可以分为三个层次:普通.精品.经典. 仅仅要游戏能赚钱的好游戏可算是精品游戏,而经典的游戏,必定有深厚的游戏内涵,甚至可以从这个游戏产生周边产品:比如从游戏改编电影.玩具等等,有额外附加值.一个游戏的好坏由多方面决定,这里我们仅仅关注趣味性.其实趣味性是一个游戏最重要的部分.游戏画面优美程度,或者玩家可玩时间,或者角色的主角的乳房部位多边形数目,这些都是其次. 1.给予玩家目标(让玩家入局) 游戏開始的时候,我们

类似拼图游戏设计

客户端设计 1.如何绘制? 分上下两层,下层为最终图片,上层尺寸和下层一致,并将上层分割为 m 行 n 列的方格. 2.方格位置如何设定? m 行 n 列的方格,设定左上角坐标为(0,0),那么最右下角坐标为( (m-1) , (n-1) ). 3.如何定义方格对象,及方格拥有什么方法和属性? 方格Pane有4个属性: locationX,locationY,PaneState,visitor. (locationX,locationY)组成方格位置信息: PaneState包含3种状态,VIS

第1章 游戏之乐——连连看游戏设计

连连看游戏设计 连连看是一种很受大家欢迎的小游戏.微软亚洲研究院的实习生们就曾经开发过一个类似的游戏--Microsoft Link-up.    图1-17为Microsoft Link-up的一个截图.如果用户可以把两个同样的图用线(连线拐的弯不能多于两个)连到一起,那么这两个头像就会消掉,当所有的头像全部消掉的时候,游戏成功结束.游戏头像有珍稀动物.京剧脸谱等.Microsoft Link-up还支持用户输入的图像库,微软的同事们曾经把新员工的漫画头像加到这个游戏中,让大家在游戏之余也互相