1307人阅读
cocos2d-x(34)
声明:本文是本人在网上看视频后作出的作品,并非真实原创(动画部分自己实现的,总结自己总结的),感谢一下勇于分享的人,你们的付出也是激励我们前进的动力,谢谢!!!此致敬礼(哈哈哈,扯系列之逗X生活欢乐多!)
下面开始正文:
/*《一个都不能死》游戏的设计及说明:*/
/************************************************************************/
/************************************************************************/
//GameScen
:继承自 Layer
// 创建 GameController
传过去 当前layer 和 Y坐标
// 创建一个集合,gcs 存放所有创建的 GameController 对象,进行碰撞检测
// 设置两个***事件:
//1. 碰撞***
auto listen = EventListenerPhysicsContact::create();
listen-&onContactBegin =[=](PhysicsContact &contact){
Director::getInstance()-&replaceScene(GameOver::creteScene());
log(&哇塞!!,我撞到了哎&);
//分发事件
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();
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
这里面是主要的设计的关键,因为要创建个数不定的小人,在 GameScene中 向 GameController中传递 layer 和
位置 就可以了
所以在这里要重写 create、init 参数为 (Layer *layer,Float postion ) 方法
这里主要是创建:
auto ground = Sprite::create();//这个奏是一个精灵,?瑟
设置颜色 //个人比较喜欢***。。。。。。3B 喔
setTextureRect设置区域
/************************************************************************/
/************************************************************************/
Sprite ,因为小人要运动,所以在 GameController中创建的时候要传进来 一个plist文件,通过下面的语句创建
重写的create方法:
Hero *Hero::create(std::string fileName){
Hero *hero = new Hero();
if(hero && hero-&init(fileName)){
hero-&autoRealease();
CC_SAFE_DELETE(hero);
重写的init方法:
Hero *Hero::init(std::string fileName){
if(!Sprite::init()){
//根据 传进来的文件创建 动画
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);//设置碰撞标识,默认是不检测碰撞的
以上基本就是我总结的,有不完善的地方,由于时间原因,只是出了个模型,以后有时间会完善,下面 附截图和源码下载地址: &
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:136261次
积分:2558
积分:2558
排名:第11745名
原创:96篇
转载:112篇
评论:46条
文章:12篇
阅读:11170
阅读:9526
文章:10篇
阅读:13472
(1)(3)(4)(7)(7)(7)(5)(14)(10)(3)(5)(10)(13)(19)(60)(44)手机扫描***手机扫描***手机扫描***
编辑点评:7.6
这是款非常有挑战性的敏捷小游戏。玩家要同时控制多个火柴人在线条上奔跑,并且还需要躲避障碍,不能死掉火柴人,尽可能的跑得远,最多可控制五个火柴人跑酷,挑战极限的朋友赶快来试一试吧,只要几分钟让你感受极限。 & &
高分攻略玩法心得入门攻略
友情链接:一个都不能死电脑版,一个都不能死电脑版小游戏,4399小游戏
分类:&&|&&大小:0.25M&&|&&日期:
请记住本站网址 ,点击,方便下次再玩。
DFJK控制不同的火柴人跳跃
普通模式:F/J控制火柴人跳跃;
噩梦模式:F/J/K控制火柴人跳跃;
地狱模式:D/F/J/K控制火柴人跳跃。
游戏加载完毕选择[普通]/[噩梦]/[地狱]模式即可开始游戏
控制火柴人越过所有的障碍吧!
请记住本站网址 ,点击,方便下次再玩。 《一个都不能死电脑版》小游戏由4399用户提供。
相关游戏推荐
精彩专题推荐
12345678910
12345678910
文明办网文明上网举报***:&|&举报邮箱:&||
Copyright & 2004 -
All Rights Reserved. 四三九九网络股份有限公司&版权所有