我将不得不拿出一个完整的开发笔记。由于个人原因。代码已OK该,博客,那么就不要粘贴代码,直接解释了整个游戏设计,更确切地说,当新手应该注意的地方发展。

1.继承类和扩展作用的权----展阅读(MVC)。

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

细致考虑一下,假设角色要再加入一个特效尾随呢。角色吃到道具出现幻影分身呢?一系列的BT需求会发现继承自sprite事实上非常鸡肋,会导致代码非常臃肿,这不是我们继承的本意。所以我们要採用继承自node来创建角色(当然,也能够继承自layer,他们两个的实现应该是一样的,差别在于触摸时间的响应,我木实用过,^_^),我们能够在node里加入我们想要的cocos2dx的对象来完好角色类。

补:今天看子龙山人的blog引用一下

这个MVC模式和游戏实体组件系统差点儿相同。我在这篇文章里面就有介绍过了。对于这两个系统来说,它的思想都是统一的。那就是不要继承CCSprite并把游戏logic所有塞到sprite里面去。

CCSprite应该仅仅负责渲染显示。

并且有时候,你可能须要创建非常多sprite,我们最好是创建一个CCNode类。然后里面聚合很多sprites。这样CCNode成为了Controller,控制view。当view(比方sprite。effect,gL
drawings等等)在屏幕上面移动的时候,controller结点会轮询全部它包括的结点来查询一些游戏相关的状态信息,而且做一些游戏逻辑,然后反过来再更新view。

參考地址:点我!

子龙山人原blog:点我!

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

(原谅我不会绘图)

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

主场景层是游戏中最大的一个层,它包括了整个场景中其它的全部节点。

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

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFuYmluZ2Zlbmd5aW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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

3.TMX地图的设计

在TMX地图中我们也要尽可能的对游戏中不同属性的元素进行划分和分类管理。

同属性的元素应该在同一个Layer里面。

例如以下:


watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaGFuYmluZ2Zlbmd5aW5n/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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


4.内存的管理

代码中出现了非常多的内存泄露,我始终没有查到原因,retain的地方我都是用了release可是还是会有泄露。
在下个项目中是用元素的时候,我想我不会再直接使用create了。而是採用预载入的方式,对全部的材质进行统一管理,读取的时候直接从内存中读取,释放的时候统一释放。



版权声明:本文博主原创文章。博客,未经同意不得转载。

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

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

    作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种 ...

  2. Unity 2D游戏开发教程之使用脚本实现游戏逻辑

    Unity 2D游戏开发教程之使用脚本实现游戏逻辑 使用脚本实现游戏逻辑 通过上一节的操作,我们不仅创建了精灵的动画,还设置了动画的过渡条件,最终使得精灵得以按照我们的意愿,进入我们所指定的动画状态. ...

  3. Cocos2d-x3.0 TestCPP文件夹笔记

    1.不多说,重力加速度. 2.ActionMangerTest:此Test是为了展示通过导演类来获得动作管理器ActionManager类.来控制节点动作. ①CrashTest:销毁demo,在精灵 ...

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

    蛋疼的问题的起源: wp8 做应用开发,显示显示中文,源码包含中文都是没有一点问题的, 只是cocos2d-x 的编码方式(UTF-8),引起的一系列的问题. 1:不能显示服务器返回的中文 2:c++ ...

  5. Cocos2d-X-3.0 之后的版本的环境搭建

     Cocos2d-X-3.0 之后的版本的环境搭建 由于cocos2d游戏开发引擎更新十分频繁,官方文档同步不够及时和完善.所以不要照着官方文档来照做生成工程. <点击图片就能进入网站> ...

  6. 痞子衡嵌入式:超级下载算法(RT-UFL)开发笔记(2) - 识别当前i.MXRT型号

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是超级下载算法开发笔记(2)之识别当前i.MXRT型号. 文接上篇 <超级下载算法(RT-UFL)开发笔记(1) - 执行在不同CM ...

  7. iOS开发笔记7:Text、UI交互细节、两个动画效果等

    Text主要总结UILabel.UITextField.UITextView.UIMenuController以及UIWebView/WKWebView相关的一些问题. UI细节主要总结界面交互开发中 ...

  8. windows下cocos2dx3.0开发环境及Android编译环境搭建

    cocos2dx更新到了3.x版本号,自己一直没有换,如今开发组要求统一换版本号,我就把搭建好开发环境的过程记录下来. 一.Windowns下开发环境搭建 1.  所需工具         1)coc ...

  9. 安卓开发笔记——关于开源项目SlidingMenu的使用介绍(仿QQ5.0侧滑菜单)

    记得去年年末的时候写过这个侧滑效果,当时是利用自定义HorizontalScrollView来实现的,效果如下: 有兴趣的朋友可以看看这篇文件<安卓开发笔记——自定义HorizontalScro ...

随机推荐

  1. android handler机制简单介绍

    我们需要了解4个类: handler:处理者,用于发送和接收信息 massage:消息.里面可以存储消息的许多信息 looper:循环泵,用于循环取出消息队列中的消息 MessageQueue(一般不 ...

  2. iOS9 集成指纹解锁

    添加依赖库 LocalAuthentication.framework #import <LocalAuthentication/LocalAuthentication.h> // 头文件 ...

  3. 通过Unity依赖注入

    前言 Unity容器的思想起始于我在为Web Client Sofitware Factory项目工作的时候,微软的patterns&practices团队已经使用依赖注入的概念好几年了在那时 ...

  4. [Head First设计模式笔记]----命令模式

    命令模式定义:将“请求”封装成对象,以便使用不同的请求.队列或者日志来参数化其他对象.命令模式也支持可撤销的操作. 类图: 适用设计方案举例:实现一种遥控器,该遥控器具有七个可编程的插槽(每个都可以指 ...

  5. input border IE6 bug

    border:none;与border:0;的区别体现有两点:一是理论上的性能差异二是浏览器兼容性的差异. 1.性能差异[border:0;]把border设为“0”像素虽然在页面上看不见,但按bor ...

  6. 扩展PHP内置的异常处理类

    在try代码块中,需要使用throw语句抛出一个异常对象,才能跳到转到catch代码块中执行,并在catch代码块中捕获并使用这个异常类的对象.虽然在PHP中提供的内置异常处理类Exception,已 ...

  7. 2014 青年歌手大赛 AC

    青年歌手大奖赛_评委会打分 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) To ...

  8. hdu1405 第六周J题(质因数分解)

    J - 数论,质因数分解 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   Desc ...

  9. java web 组件Listenter(一)

    JavaWeb中监听器的事件源(ServletContext.HttpSession.ServletRequest.JavaBean) 1.ServletContext 生命周期监听:ServletC ...

  10. 转:聊聊并发(八)——Fork/Join框架介绍

    1. 什么是Fork/Join框架 Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架. 我们再通过 ...