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

游戏实例来自《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
    评论
跑跑卡丁车游戏是一款3D赛车游戏,实现起来比较复杂,需要使用到一些游戏引擎和图形库。以下提供一种基于Pygame实现的简单跑跑卡丁车游戏的实现方法。 首先,需要安装Pygame库,可以使用以下命令进行安装: ``` pip install pygame ``` 接下来,创建一个Python文件,导入Pygame库并初始化: ```python import pygame pygame.init() ``` 然后,设置窗口大小和标题: ```python WINDOW_WIDTH = 800 WINDOW_HEIGHT = 600 window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) pygame.display.set_caption('跑跑卡丁车') ``` 接下来,加载游戏资源,包括赛道、卡丁车、音效等: ```python track_image = pygame.image.load('track.png').convert_alpha() car_image = pygame.image.load('car.png').convert_alpha() engine_sound = pygame.mixer.Sound('engine.wav') ``` 然后,定义一些常量,如卡丁车速度、转向角度等: ```python CAR_SPEED = 5 CAR_TURN_ANGLE = 5 ``` 接下来,创建一个Car类表示卡丁车,并实现它的移和绘制方法: ```python class Car: def __init__(self, x, y, image): self.x = x self.y = y self.image = image def move(self, dx, dy): self.x += dx self.y += dy def draw(self, surface): surface.blit(self.image, (self.x, self.y)) ``` 然后,创建一个Track类表示赛道,并实现它的绘制方法: ```python class Track: def __init__(self, image): self.image = image self.x = 0 self.y = 0 def draw(self, surface): surface.blit(self.image, (self.x, self.y)) ``` 接下来,定义游戏循环,包括事件处理、卡丁车移和绘制、赛道绘制等: ```python clock = pygame.time.Clock() car = Car(400, 300, car_image) track = Track(track_image) engine_sound.play() while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() keys = pygame.key.get_pressed() if keys[pygame.K_UP]: car.move(0, -CAR_SPEED) if keys[pygame.K_DOWN]: car.move(0, CAR_SPEED) if keys[pygame.K_LEFT]: car.move(-CAR_SPEED, 0) if keys[pygame.K_RIGHT]: car.move(CAR_SPEED, 0) window.fill((255, 255, 255)) track.draw(window) car.draw(window) pygame.display.update() clock.tick(60) ``` 最后,运行程序,即可看到简单的跑跑卡丁车游戏。 这只是一个简单的实现方法,如果要实现更复杂的跑跑卡丁车游戏,需要使用到更多的游戏引擎和图形库,并进行更多的开发工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值