cocos2d-x基本概念

场景(CCScene):我们假设一个只有两关的游戏:第一关(2个小鬼,1个小BOSS);第二关(5个小鬼,1个大BOSS)。通常情况下,我们会这样设计整个游戏的流程(workflow):

 

开场动画,可以有几个目的:简单介绍一下游戏操作\讲述故事背景\公司或者工作室动画LOGO

进入主菜单后可以引导用户:开始新游戏\读取进度\设置游戏 声音,文字,游戏内容设置……\高分排名 通常都是列表,按分数排列。\帮助 操作简介\退出

接下来,玩家可以有多种选择,无论开始新游戏还是读取进度,游戏都会进入到预设关卡。游戏过程中,第一关胜利就进入第二关,第二关胜利则进入结尾的胜利画面(播放视频或者在背景图上显示文字),确认后进入排名画面看看本次得了多少分。如果失败了,那就会进入失败结束的画面,确定后跳转到主菜单,重新开始。
可以看出,玩家玩游戏的过程就是在我们预设的画面之间进行跳转,根据玩家操作的结果(选择菜单项、消灭敌人或者被敌人杀死)跳转到不同的画面。
这些构成游戏流程的画面就是我们所说的场景,图中用黑色线框表示的部分。显然,不同的场景提供不同的操作,大致可以分为以下几类场景:

展示类场景:播放视频或简单的在图像上输出文字,来实现游戏的开场介绍、胜利/失败提示、帮助说明等。
选项类场景:主菜单、游戏参数设置等。
游戏场景:这是游戏的主要内容,除了这个场景之外,其他类别的场景基本都是通用框架实现的。

那么不同的场景是如何实现不同功能的呢?每个场景都是通过不同的层的叠加和组合来实现不同的功能的。因此,通常一个场景是由一个或多个层组成的。

层(CCLayer)

层是我们写游戏的重点,我们99%以上的时间是在层上实现我们的游戏内容。如下图所示,一个简单的主菜单画面是由3个层叠加实现的:


细心的读者可能已经注意到,为了让不同的层可以组合产生统一的效果,这些层基本上都是透明或者半透明的。(否则我们就只能看到最上面的一个层了)层的叠加是有顺序的,如图所示,编号为1的背景层在最下层,2号在中间,3号在最上面。cocos2d-x也是按照这个次序来叠加画面的,处于最上层的不透明的部分会将下面的内容覆盖。这个次序同样用于编程模型中的事件响应机制。即编号3的层最先接收到系统事件(手指单击屏幕事件),然后是编号2,最后是编号1的层。在事件的传递过程中,如果有一个层处理了该事件,那么排在后面的层将不再接收到该事件。
我们可以简单地把层理解为我们在Windows编程中的窗口(hWnd或者WinForm,还有Delphi中的TForm)。
为了方便大家进行游戏开发,cocos2d-x从技术实现角度提供一些公用层:处理菜单用的菜单层,处理颜色显示的颜色层等。每一层又可以包含各式各样的内容要素:文本、链接、精灵、地图等等。其中,精灵是游戏的重点。

精灵(CCSprite)

精灵是整个游戏开发处理的主要对象。敌方的飞机、坦克是系统控制的精灵,玩家控制的我方飞机也是精灵,甚至随机飞过的一片云、一只鸟都是精灵。
从技术上讲,精灵就是一个可以不断变化的图片。这些变化包括:位移、旋转、缩放以及图片帧的切换。
所谓游戏,就是玩家操作一个或多个精灵与系统控制的精灵进行互动:近身肉搏、远程射击、对话等等。

导演(CCDirector)

我们已经大概了解了一个游戏的整体架构,不同的场景由不同的层组成,每个层又包含精灵在上面运动。玩家玩游戏的过程就是在操作层上的精灵或者菜单项,从而在不同的场景中切换。
好了,有些OO编程基础的读者已经猜到导演对象的作用了。是的,按照面向对象的设计原则和反向依赖原则:精灵不应该依赖层,层不应该依赖场景,场景不应该依赖整个流程。导演对象就是整个流程的代表,他负责游戏过程中的场景切换。
导演通常只有一个,因此这个对象是单例(singleton)。cocos2d-x框架已经预定义了该实例,无需额外创建,我们直接使用就可以。
导演对象接收层对象/场景对象的请求,按照预先设计好的流程来切换场景。至此,我们可以勾勒出一个游戏的整体框架和cocos2d-x关键对象与之的对应关系:


需要特别说明的是:任何时间,只有一个CCScene对象实例处于激活状态。该对象可以作为当前游戏内容的对象的容器,对于菜单对象来说,通常属于当前场景的主层。以上就是一个游戏的主要架构。
实际上,针对每一个游戏场景而言,不同场景(关卡)、每一个层(静态、动态)、每一个对象(敌人、我方、中立方)其实都很复杂。万里长征,这才第一步呢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值