- 11
- 0
- 约1.32万字
- 约 57页
- 2019-08-28 发布于辽宁
- 举报
传统横版游戏设计与开发过程
游戏场景
• Cocos2d-x引擎提供Scene类作为游戏场景
• 游戏场景即展现给玩家的画面,可以包括多个图层(layer)和多个精
灵 (Sprite )等
• Cocos2d-x 引擎提供接口用于场景切换,例如从菜单向读取画面切换
从读取画面向游戏关卡切换等。
-
游戏场景
• 游戏场景的地图、物体、对话等具体逻辑均需根据需求并利用引擎提
供的接口逐步实现;
• 游戏的基本运算思路为,实现场景的update接口,完成每帧所需要的
运算与渲染操作;
• 引擎提供Action类可以方便的完成各类简单的动作 但提供的功能和
本demo需求不太相符 因此没有大量使用;
• 接下来将分别从地图、游戏物体、对话和场景逻辑介绍游戏设计和开
发过程
地图
• 使用免费软件Tiled Map Editor制作
• 需要自行绘制地图贴图素材
• Cocos2d-x引擎对该软件有良好的支持,可以直接从中读取贴图、贴
图自定义属性、自定义对象等信息在代码中进行处理
地图
• 所使用的地图素材:
地图碰撞
• 全部由32像素*32像素的方块构成,被称为瓦块(Tile )
• 瓦块分为两个大类:包含碰撞逻辑的瓦块和仅作为贴图显示的瓦块
地图碰撞
• 包含碰撞逻辑的瓦块分为3个子类:
• 一般瓦块:整个瓦块都有碰撞判定,物体无法进入其中;
• 平台(Platform)瓦块:瓦块可以从两侧和下方通过,但无法直接从上
方通过;
• 斜坡瓦块:瓦块记录坡度(HeightMask)信息,根据坡度信息完成碰撞
检测;
例如一个45度的斜坡的高度信息,记录x为0-31的
像素点的高度信息,分别从1到32 。
地图碰撞
• 根据特殊逻辑再细分为静止瓦块和可动瓦块,可动瓦块分为自动处理
和事件触发两种
玩家靠近后会自动打开的门 玩家触发事件后会打开的门
地图碰撞
• 地图工具中所完成的相关设置
• 记录有碰撞逻辑的瓦块的信息:
• type:99为一般瓦块 2为平台瓦块 1为斜坡瓦块 5为自动门 10为
触发门
• 斜坡瓦块需要记录坡度信息,本demo不考虑圆弧形地形,所以仅记
录左右端点的高度信息即可,即left和right值
地图碰撞
• 记录碰撞信息的相关代码
• 地图的读取和渲染信息全部由引擎提供的库进行处理,碰撞信息处理
需要自行实现
• 存储瓦块碰撞信息的自定义数据结构:
• 需要记录每个瓦块的位置信息与碰撞信息
地图碰撞与游戏物体
• 碰撞逻辑相关代码
• demo 中的自定义游戏物体分为两大类:地面物体和飞行物体。
• 地面物体需记录是否位于地面,如果非位于地面,则对其施加重力
直到下落至触发碰撞为止,不会从上方穿越平台瓦块。例如玩家,人
形敌人。
• 飞行物体任何时间不受重力作用,会穿越平台瓦块。例如飞行器,子
弹。
地图碰撞与游戏物体
• 地面物体类
与地图碰撞有关的成员:
semiWidth :物体半宽度信息 height:物体全高度信息
legLength:物体腿长(一般为半高度,用于计算人形物体中心点位置)
verticalRayCastLength :物体竖直向碰撞检测距离
onPlatform :是否位于平台瓦块上方
onGro
原创力文档

文档评论(0)