cocos2dx3.0 超级马里奥开发笔记(二)——正确规划游戏的逻辑

本来想出一个完整的开发笔记,因为个人原因,代码已经OK了,博客的话就不贴代码了,直接讲解一下整个游戏的设计,更确切的说是新手开发时应该注意的地方。

1.角色类正确的继承和扩展。

我们要封装一个角色类,第一印象就是封装一个继承自sprite的精灵,里面封装好玛丽的动作和角色属性等。继承自sprite是可行的,我们只要重写几个static create函数,然后把这个精灵贴到层上即可。

仔细考虑一下,如果角色要再添加一个特效跟随呢,角色吃到道具出现幻影分身呢?一系列的BT需求会发现继承自sprite其实很鸡肋,会导致代码很臃肿,这不是我们继承的本意。所以我们要采用继承自node来创建角色(当然,也可以继承自layer,他们两个的实现应该是一样的,区别在于触摸时间的响应,我木有用过,^_^),我们可以在node里添加我们想要的cocos2dx的对象来完善角色类。

2.主场景层、游戏层、控制层、展示层、地图层、角色层的关系。

(原谅我不会画图)

首先在写代码之前,我们应该明确整个地图层的关系,不要把所有的东西添加到同一个层中来控制。

主场景层是游戏中最大的一个层,它包含了整个场景中其他的所有节点。

控制层:虚拟遥感所在的层

游戏层:我们所看到的地图和人物所在的层

展示层:一些分数血量等静态的东西。

这么做的好处在后期代码的编写中是显而易见的,特别是对于精灵position的控制,我们不需要使用过多的坐标转换来移动一些角色和地图。

3.TMX地图的设计

在TMX地图中我们也要尽可能的对游戏中不同属性的元素进行划分和分类管理。 同属性的元素应该在同一个Layer里面。如下:

在解析地图的时候,我们就可以实现分层来控制整个地图中的元素。

4.内存的管理

代码中出现了很多的内存泄露,我始终没有查到原因,retain的地方我都是用了release但是还是会有泄露。

在下个项目中是用元素的时候,我想我不会再直接使用create了。而是采用预加载的方式,对所有的材质进行统一管理,读取的时候直接从内存中读取,释放的时候统一释放。

时间: 2024-08-07 02:11:59

cocos2dx3.0 超级马里奥开发笔记(二)——正确规划游戏的逻辑的相关文章

cocos2dx3.0 超级马里奥开发笔记(一)——loadingbar和pageview的使用

学完cocos2dx课程的第一个项目选择了超级玛丽.可以说有自己的想法,简单但是确实不简单. 我花了一天把一份2.1版本的超级玛丽源码升级到了3.0,改改删删,参考那个源码虽然好多不懂,但是马虎升级成功,游戏正常玩耍. 本着不为把游戏做出来而写代码的想法,罗列了一下这个游戏可以使用到的知识点.数据持久化的三种方式.loading页面.tmx地图解析.cocosStudio场景.屏幕适配.关卡如何选择.代码结构的优化(各种类的抽象继承),在基本功能出来后可以自己去设计变态关卡等. 两天实现了loa

Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程详解

作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种各样的问题也就来了,之前网上一直有零零碎碎的移植教程,但是都不完整,或是有这样或者那样的问题.今天刚刚研究成功了Cocos2dx-3.0版本项目的安卓平台移植问题,本人亲自完成了整个过程,将Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程 一起分享给大家.

手游:cocos2d-x3.0 移植 wp8 开发 各种 “蛋疼”问题的汇总

蛋疼的问题的起源: wp8 做应用开发,显示显示中文,源码包含中文都是没有一点问题的, 只是cocos2d-x 的编码方式(UTF-8),引起的一系列的问题. 1:不能显示服务器返回的中文 2:c++ 包含中文的问题 解决方案: 微米黑--开元字体库, 提点:  非常小 ----未完待续... 手游:cocos2d-x3.0 移植 wp8 开发 各种 "蛋疼"问题的汇总,布布扣,bubuko.com

PHP微信公众开发笔记(二)

PHP微信公众开发笔记系列 日期:2014.9.1 需求分析: 在成功的开启了微信开发者服务之后,我们便需要开始做响应用户操作的功能了.其实做微信公众平台,当初的目的我就是想做成一个服务平台,因为刚大学毕业,同学各奔东西.有的时候可能我们会到一个陌生的城市去,那时可能就会想啊,这个城市有班上的同学在么?这时掏出手机,点开服务号输入这个城市名,就会返回一串信息,假如有同学在这个城市,就会列出联系信息之类的.当然也许会说,既然是熟悉的同学,那么肯定会知道联系方式之类的,还需要这样多此一举么.而我的考

RBL开发笔记二

 17:13:55 2014-08-25 有以下几个点:  第一 :怎么在预处理阶段能够做到识别某个宏是否给定义了  这里就定义了一个SystemConfig.h 专门做这个事情  当然是需要makefile来配合的 http://blog.csdn.net/chaoqunz/article/details/6033663  这篇博文已经提到相应的方法  在makefile里加一个-D 参数  这相当于就是Makefile一个补充参数吧. 第2: 因为我的计划写这个RBL的时候  可以通过配置文

离线谷歌地图API的开发笔记(二)

一.地图引擎介绍 离线地图引擎运行在WINDOWS平台上,底层由Visual c++语言开发,编译为OCX插件方式.占用文件少,便于二次开发的快速安装部署. 具有专业地图的基础操作功能:地图放大.缩小.移动.测量距离,测量面积. 支持以下矢量操作:点.线.面.透明矩形.透明圆形.箭头等添加/编辑/删除操作. 软件支持操作系统:Windows98/Me/2000/XP/win7/win8/win10 支持VB,VC,Delphi,C#等开发工具的二次开发, 从此可以专注于您的专业领域,不再为地图开

Fast.Framework开发笔记二:VisualStudio解决方案的搭建

VisualSutio项目结构图: 对!你没有看错,本篇说的就是解决方案的搭建.是不是觉得没一点技术含量啊?,我们先来看下要搭建一个什么样的解决方案吧? 第一.软件架构师能对框架代码进行封装(Framework.Applications). 第二.软件开发工程师以DLL形式调用所有框架代码,并在相应的项目中可以进行定制化开发. 解决方案说明: Applications (框架的业务代码将会放在这里面,实际路径在Fast.ERP.Web之下,是为了开发项目在访问框架里面的View页面) |----

Android TV 开发笔记二:创建第一个Android TV App

一:创建 New Project 1. 2. 3. 4. 创建成果后发现已经帮你创建好了一些demo页面,并且数据都已经绑定好了 二:解决错误 1.创建成功后,build发现报错了,如下: 这个错误是因为版本问题导致的 解决方法,将版本号修改为以下的: 接着又会报错: 作为一个程序员,这点小错误相信难不倒你,自己解决吧,是HeaderItem用的构造函数不对导致的 至此终于得到了一个可以运行的AndroidTV Demo

服务端开发笔记二:基于pomelo的分布式手游架构

经过了一个周的时间,新项目的基本结构已经大体确定,拿来给大家分享. 一 基础概念 在说明手游服务器架构之前,一下几点须知. 1 我们的服务器集群分为前端服务器和后端服务器. 前端服务器:负责接收前端请求,实际上只有两个gate和connector: 后端服务器:负责后端服务器相互调用,如auth,area: 虽然在我们写路由的时间直接写的是area中handler下文件中的方法, 但是这是通过connector间接调用的,不要认为area是前端服务器. 2 对于每个单独的服务器,一般由三个可选的