《跑跑跑》(二)——让主角动起来

游戏实例来自《Cocos2d-x游戏开发之旅》,作者主页:http://www.benmutou.com/




为了让主角跑起来,先给主角添加一个动画,首先给Player添加一个函数

run(),如图:


run()实现:


此时,运行项目,可以看到主角在原地跑起来了。


让主角向前跑起来——添加角色控制器

  我们采用组合来实现让主角向前跑,把向前跑作为一个功能单独写在一起类,主角只要增加一个成员变量(向前跑的

类)就能实现向前跑的动作。而这个类,就是控制器。

先创建控制器的父类,在“控制器筛选器”下新建Controller.h和Controller.cpp文件。如代码:
 
Controller.h:

Controller.cpp

很简单的一个类,只有一个变量和一个方法,我们来看看ControllerListener是做什么用的。ControllerListener就是我们

将要被控制的对象,比如主角,只要继承了ControllerListener接口,就能够被控制器控制。

看看ControllerListener的代码,在“控制器筛选器”下创建ControllerListener.h头文件,代码如下:

只有头文件,且只需要头文件,不需要cpp文件。定义了两个虚函数,用来设置和获取被控制对象的坐标。

带着它就能跑——主角移动控制器

我们来实现第一个控制器,控制物体只向前移动的控制器,我们在“控制器筛选器”下再创建一个筛选器,命名为“简单

移动控制器”,在该筛选器下新建一个类,命名为SimpleMoveController,代码如下:
SimpleMoveController.h:

SimpleMoveController.cpp:


SimpleMoveController继承了Controller类 , 也很简单,拥有一个成员变量m_iSpeed,用来设置移动速度。

这里再次简单介绍一下update(float dt)函数,update 函数是CCNode 节点的函数,有什么用呢?很强大的,我们

都知道,游戏的画面是一帧帧地绘制,从而形成丰富多彩的世界。而程序只需要在每一帧里执行操作,绘制图形。

update函数提供了一个入口,让我们可以在游戏的每一帧里执行我们自己想要做的事情。

float dt参数是什么呢?我们都知道CPU是一个很忙的孩子,CPU不可能让所有update函数同时进行,只能是一个个

执行,所以总有人先调用有人后调用,float dt参数就记录了某个update函数从最后一次被调用到本次调用时经过了多少毫

秒。那这又有什么用呢?很有用,但是我们先不管。

接下来我们还要稍微改变一下Entity类,

Entity.h:

Entity.cpp

我们为Entity又继承了一个父类,那就是ControllerListener,大家都知道为什么了,因为我们的角色需要被当作一个被

控制器控制的对象。另外我们还未Entity新增了一个方法,那就是setController,当然了,因为我们需要绑定一个控制器。

最后,我们打开TollgateScene.cpp的addPlayer函数,在addPlayer函数最后加上一段代码,如下:


运行项目!主角跑起来了!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值