《Little Runner》(四)——添加怪物

效果图:


首先在实体筛选器中创建“怪物筛选器”,然后在“怪物筛选器”下新建一个类,命名为Monster。

Monster.h的代码如下:


Monster一共声明了4个函数,1个变量,分别介绍如下:
(1)show函数:由于怪物是不断出现,然后不断消失的(碰到主角就消失),为了避免频繁“new”对象,怪物消失时只是暂时隐藏,而不进行销毁,该函数用于显示怪物。
(2)hide 函数 :如上所述,该函数用于隐藏怪物。
(3)reset函数:怪物从出现到碰撞玩家后消失,其间可能改变了一些属性,该函数用于重置怪物属性,恢复初始状态,以便下次使用。
(4)isAlive函数:判断怪物是否在活动状态(及调用了show函数,处于显示状态)。

Monster.cpp代码:




如今怪物已经有了,怎么让它出现呢?我们要再写一个怪物管理器。
先创建一个”管理器筛选器“,在这筛选器下再建一个“怪物管理器筛选器”,如图:

在怪物管理器筛选器下新建一个类,命名为MonsterManager,先来看看头文件代码:

怪物管理器就是用来创建怪物、判断怪物什么时候出现、什么时候隐藏,再来看看MonsterManager.cpp文件:


目前MonsterManager只做了一件事情,就是创建若干个怪物对象,保存到列表中

我们要介绍一个新的类:CCArray。CCArray是Cocos2d-x封装的一个类,使用列表的方式存放一组对象,也就是我们常用的列表容器

这里要提醒一下,Cocos2d-x类的成员变量在创建后还要调用retain函数,否则可能会导致程序崩溃,关于retain的内容,我们将在后续内容讨论

创建怪物的方式和创建主角的方式一样,也是绑定一个CCSprite对象给怪物即可。

因为,怪物的初始坐标(在reset()里面设置的)在屏幕之外,因此在怪物管理器中还要添加一个功能,那就是不断改变怪物的坐标,这个功能就是上面的MonsterManager.cpp中的update函数。
这里要介绍一个宏:CCARRAY_FOREACH,这个宏是用来遍历CCArray的,第一个参数是CCArray对象,第二个参数是存放遍历值得对象,第二个参数是存放遍历值的对象,取得遍历值后,我们还要进行类型转换。
再来看看update函数做了什么:
(1)判断怪物是否处于活动状态,如果不是,则调用怪物的show函数,让怪物出场
(2)如果怪物已经处于活动状态。则让怪物的X坐标减少4个像素,这样怪物就相当于向左移动了。如果怪物的X坐标小于0,则表示怪物超出屏幕范围,调用hide函数,隐藏怪物。

现在,我们在TollgateScene.cpp的init函数最后添加几句代码,让怪物管理器生效,如下代码:


接下来按Ctrl+F5运行项目,就可以看到效果图了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值