本来想出一个完整的开发笔记,因为个人原因,代码已经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.主场景层、游戏层、控制层、展示层、地图层、角色层的关系。
(原谅我不会画图)
首先在写代码之前,我们应该明确整个地图层的关系,不要把所有的东西添加到同一个层中来控制。
主场景层是游戏中最大的一个层,它包含了整个场景中其他的所有节点。
控制层:虚拟遥感所在的层
游戏层:我们所看到的地图和人物所在的层
展示层:一些分数血量等静态的东西。
这么做的好处在后期代码的编写中是显而易见的,特别是对于精灵position的控制,我们不需要使用过多的坐标转换来移动一些角色和地图。