【木头Cocos2d-x 015】游戏实例-《跑跑跑》制作教程(第七篇)——添加能吃的物品以及胜利条件

本文主要是介绍【木头Cocos2d-x 015】游戏实例-《跑跑跑》制作教程(第七篇)——添加能吃的物品以及胜利条件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Cocos2d-x游戏实例-《跑跑跑》制作教程(第七篇)——添加能吃的物品以及胜利条件

 

笨木头花心贡献,啥?花心?不呢,是用心~

转载请注明,原文地址
 http://blog.csdn.net/musicvs/article/details/8203206

 

正文:

 

注:本文使用到的资源请到这里下载:http://download.csdn.net/detail/musicvs/4769412

 

 

 

我们的游戏已经很像游戏了(像?敢情它真的不是一个游戏?),于是我们给主角加点吃的吧,老是这么跑,没有追求啊喂~

 

1.       画点吃的物体

现在,我们又要打开我们的地图编辑器,把下面的星星作为可以吃的物品画到barrier地图层上:

 

看看我的画吧,依旧有大师风范~

 

2.       添加另类障碍物。

其实,吃的物品,也可以当成是障碍物,只不过这个障碍物和主角碰撞之后会消失,仅此而已。

于是,我们和之前描红格子的方式一样,不过,这次我们要描蓝色格子,选择图块上的蓝色格子,噢,抱歉,它是绿色的= =。右键,属性,我们给绿色格子添加一个属性,叫做“star”,属性值为true

 

然后,我们把地图切换到meta层,在上面用绿色格子把我们的所有星星都覆盖~效果如下:

 

3.       让主角把星星吃掉

其实大家到这里应该早就知道接下来该怎么做了,是吧,不过我还是稍微啰嗦一下哈。

打开我们Player.cppsetSimplePosition函数,以前我们只是取得主角当前所在地图格子的属性里的Collidable属性值,这次我们还要再多获取一个值,那就是star的属性值。函数稍微修改了一些,并且加了一些容错机制:

void Player::setSimplePosition( int x, inty )

{

    /* -----------------判断是否不可通行---------------- */

/* 获得当前主角在地图中的格子位置 */   

CCPoint tiledPos = tileCoordForPosition(ccp(x,y));

 

    /* 获取地图格子的唯一标识 */

    int tiledGid = meta->tileGIDAt(tiledPos);

 

    /* 不为0,代表存在这个格子 */

    if(tiledGid != 0) {

        /*

            获取该地图格子的所有属性,目前我们只有一个Collidable属性,

            格子是属于meta层的,但同时也是属于整个地图的,所以在获取格子的所有属性时,

            通过格子唯一标识在地图中取得。

        */       

CCDictionary* propertiesDict = map->propertiesForGID(tiledGid);

 

        if(propertiesDict !=NULL) {

            const CCString* prop = CCString::create("");

 

            /* 取得格子的Collidable属性值,判断Collidable属性是否为true,是的话,不让玩家移动 */           

prop = propertiesDict->valueForKey("Collidable");

            if(prop->length() > 0 &&prop->m_sString.compare("true") == 0) {

                if(x > 0) {

                    x -= 1;

                }

                else {

                    x += 1;

                }

 

                if(y > 0) {

                    y -= 1;

                }

                else {

                    y += 1;

                }

            }

 

            /* 取得格子的star属性值,判断是否为true,是的话,让格子上的物体消失 */

            prop = propertiesDict->valueForKey("star");

            if(prop->length() > 0 &&prop->m_sString.compare("true") == 0) {

                /* 从障碍物层清除当前格子的物体 */               barrier->removeTileAt(tiledPos);

            }

        }

    }

 

    Entity::setSimplePosition(x,y);

 

    /* 以主角为中心移动地图 */

    setViewPointByPlayer();

}

 

做法和之前的红色格子是一样的,不多说了,已经注释了。这次说明一点,我加了一个barrier变量,就是我们的障碍层,加到Entity类里:

class Entity : public CCNode, public ControllerListener {

public:

    void setSprite(CCSprite* mSprite);

    void setController(Controller* controller);

 

    /* 实现SimpleMoveListener接口的方法 */

    virtual void setSimplePosition(intx,inty);

    virtual CCPoint getCurPosition();

protected:

    CCSprite* mSprite;

Controller* mController;

 

/* map本来是在Player类的,现在我们放在这里 */

CCTMXTiledMap* map;

 

/* 检测碰撞的地图层 */

CCTMXLayer* meta;  

 

/* 障碍物层 */

CCTMXLayer* barrier;

 

    /* 将像素坐标转换为地图格子坐标*/

    CCPoint tileCoordForPosition(CCPoint pos);

};

 

 

然后在Player.cppinitWithTiledMap函数里给barrier赋值:

/* 加载对象层的所有对象 */

    CCTMXObjectGroup* objGroup = map->objectGroupNamed("objects");

 

    /* 加载meta */

    meta = map->layerNamed("meta");

    meta->setVisible(false);

 

    /* 加载障碍物层 */

    barrier = map->layerNamed("barrier");

 

 

OK了,编译运行,当主角经过星星时就会吃掉它,啊,不过,只是吃掉部分而已。这个不是很好,但是,暂时就这么做吧。

 

对了,我们有没有发现,现在主角是在星星和石头的下面的?这是图层次序问题,我们做一个小改动就好了,打开Player.cppinitWithTiledMap函数,添加主角精灵到地图的时候增加一个order参数:

/* 精灵添加到地图ª? */

    map->addChild(playerSprite, 20);

 

这样主角就不会在下面了。

 

4.       加入胜利条件

本来加入胜利条件我们依旧可以使用红色、绿色格子这种方式,再添加一个紫色格子,在地图的最右边纵向画一条,然后给紫色格子加一个属性“win”,值为true。然后当主角进入地图的这些紫色格子的位置时,就算是胜利。

  但是,由于时间关系,这篇教程实在是花了我不少时间了,我就不详细说明了。

这篇关于【木头Cocos2d-x 015】游戏实例-《跑跑跑》制作教程(第七篇)——添加能吃的物品以及胜利条件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/203127

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

C++操作符重载实例(独立函数)

C++操作符重载实例,我们把坐标值CVector的加法进行重载,计算c3=c1+c2时,也就是计算x3=x1+x2,y3=y1+y2,今天我们以独立函数的方式重载操作符+(加号),以下是C++代码: c1802.cpp源代码: D:\YcjWork\CppTour>vim c1802.cpp #include <iostream>using namespace std;/*** 以独立函数

实例:如何统计当前主机的连接状态和连接数

统计当前主机的连接状态和连接数 在 Linux 中,可使用 ss 命令来查看主机的网络连接状态。以下是统计当前主机连接状态和连接主机数量的具体操作。 1. 统计当前主机的连接状态 使用 ss 命令结合 grep、cut、sort 和 uniq 命令来统计当前主机的 TCP 连接状态。 ss -nta | grep -v '^State' | cut -d " " -f 1 | sort |

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.