注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

木子三石的博客

计算机技术和现代诗艺术!

 
 
 

日志

 
 

《Cocos2D-X游戏开发1》  

2014-09-03 12:34:55|  分类: cocos2dx游戏开发 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1、Cocos2D-X是一款开源免费并支持多平台的游戏引擎。

2、在电子游戏初期,没有引擎,这是在游戏技术发展了一段时间后产生的。

3、约翰.卡马克 是游戏引擎之父,1990年他发布的游戏Doom就是基于引擎开发的。

4、现在很少有人会用一体化的方式开发游戏,都会选择使用游戏引擎开发。

5、要想成为一个引擎的使用高手,官方网站必将是读者频繁访问的地方。

6、引擎对游戏画面以层次的方式进行划分,也就是一个游戏场景可以包含多个游戏层(Layer)

7、引擎中与渲染有关的大多数类都是来自于一个基类,它被称作根源种子。

8、CCObject类是所有类的父类,CCNode类是引擎渲染的根源种子

CCObject是一个抽象类,仅仅是一个概念。

9、CCNode有一个特性是定时器,它是程序开发中常用的一个概念,它及它的子类保存了游戏元素的相关数据。

10、游戏中的元素比如:人物、怪物、道具,它们都成为是精灵(CCSprite),它是使用动作最多的。

***********************************************************

1、场景类CCScene是用来作为游戏中的元素的载体,或者说容器。

2、引擎渲染框架含有五个主要的类,它们是:场景类、图层类、菜单类、精灵类、粒子系统类。

3、引擎里也有一个导演叫CCDirector,引擎渲染的层次是:导演->场景->层次->精灵,一个场景可以分为多个层次。

4、导演是整个游戏流程的管理者,它负责游戏全过程的场景切换、视角转换以及显示窗口。

5、
引擎中的显示窗口称为EAGLView

6、场景通常不包含游戏逻辑,仅仅是作为一个容器。

7、游戏的场景可以分为三种类型:展示类场景、选项类场景、游戏内容场景。

8、图层(CCLayer)才是真正的用来显示游戏画面的,它其实也没有实际的绘制内容,主要作用是建立用户交互的功能。

9、CCLayerColor层是颜色层,一般是用来作为游戏的背景层。

10、CCSPrite类是引擎中代码最多的类,因为它是游戏开发者的主要控制对象。

***********************************************************

1、精灵集合类中没有重载绘图函数,它有两个子类分别是字体类(CCLabelBMFont)和地图背景类(CCTMXLayer)

2、精灵集合的特性就是能够加快精灵的绘制速度。

3、游戏开发中的一些编辑器和工具室开发者的秘密武器,比如2D纹理图片包装工具——Zwoptex

4、PNG 格式的图片要比其他的图片格式所占控件小。

5、游戏制作中存在两种文字:美术字和排版字。

6、COCOS2D-X中的引擎中的动作系统是最具魅力的功能,它能让游戏活力十足。

7、动作分为即时动作和延时动作,即时动作是指动作一旦设置就立即执行,而延时动作是需要等待一段时间后才执行。

8、持续动作类存在很多的子类,延时动作类只有一个动作,它是延时动作类的子类。

9、有些持续动作类是有多个子动作,CCNode可以执行这些动作。

10、 持续动作类中有一个很特殊的类叫CCDelay,它可以用于延时操作

***********************************************************

1、cocos中还有动画动作类,它同样是继承于持续动作类CCActionInterval,动画在游戏中是必不可少的元素,所以很重要。

2、动画就是利用人眼的视觉残留而产生动态的效果。

3、良好的用户交互体验是成功游戏的必备条件。

4、CCTouch里面包含了用户操作的数据,CCTouchDispatcher是用来发送CCTouch的。

5、CCLayer是一个标准的委托对象。

6、委托对象分为接收多点触摸和单点触摸的委托对象。

7、地图中的Tile Map是指砖块地图,地图编辑器的高级版本是关卡编辑器,这些工具是为了减少人为的错误。

8、制作地图编辑器用得最多的语言是C#Tile Map Editor是一款十分出色的地图编辑器。

9、游戏中常说的2.5D游戏其实就是指游戏地图是采用的 45 的地图,这种地图增加了一种视觉深度

10、物体层是地图中独立的物体对象的集合,但是同样包含在地图中,它们一般是具有特殊意义的物体,比如一座房屋。

***********************************************************

1、在砖块地图的属性上,Tile Map Editor能够随意的定义数据,加强了编辑器与游戏之间的结合,为设计人员提供更广阔的创作空间。

2、CCos2D-X专门设计了一个类来读取和解析TMX文件,它是CCTMXTiledMap,它继承自CCNode类。

3、砖块地图的每一个砖块元素都会被当做精灵对象来处理。

4、地图可以由很多个图层构成,比如Layer1Layer2ObjectGrouptLayer(对象层、物体层)。

5、
地图的滚动分为横向滚动纵向滚动全屏滚动

6、不一定非得要在砖块地图中加入砖块,也可以仅仅是一张纹理图片。

7、砖块地图的最大优点是能够节省空间,提高绘制性能。

8、CCos2D-X中有一个物理引擎,《愤怒的小鸟》就是用的这个物理引擎。

9、碰撞检测中有一个最基本的概念就是包围盒,它是用一种规则的几何图形代表物体的边缘。

10、有一个很高效的碰撞检测技术叫AABB技术,它是通过轴对齐包围盒实现的。

***********************************************************

1、2D游戏中多用的是经典物理学的理论,比如牛顿定律。

2、CCos2D-X中有一个物理模拟引擎——Box2D

3、游戏中的动画分为静态动画和动态动画,静态的是预先准备好了动画帧,而动态的是动态生成动画帧。

4、Box2D引擎的物体只有刚体物体,没有液体、软体等物体。

5、Box2D引擎由三个模块构成:公共、碰撞和动态,其中公共模块是最基础的。

6、Box2D中使用了SOA技术来进行内存管理,意思就是说小对象内存分配。

7、Box2D中还有一种与AABB碰撞检测同名的查询技术叫AABB查询

8、Fixture可以把Shape(形状即包围盒)附加到物体上,其实Fixture可以看做是物体的属性集合,所以一个物体(Body)可以对应不同的Fixture

9、阻尼就是指阻碍物体运动的阻碍作用的大小

10、Box2D中有一个连续碰撞检测的概念即CCD,引擎为我们自动处理因为快速碰撞而产生的“穿越”现象,但是我们需要将物体属性设置为“子弹”。

***********************************************************

1、物体的 非活动状态 和 休眠状态 是很不一样的,前者是需要开发者自己去激活,而后者只要有碰撞就会自动激活。

2、Box2D中的 “关节(Joints)” 和平常说的关节的概念相似,是指用于连接两个或者两个以上的物体的东西。

3、一般由多个物体组成的游戏元素都需要关节来进行连接。

4、CCos2D-X中有一个声音引擎,叫CocosDenshion,也是开源引擎。

5、音乐分为 “背景音乐” 和 “声音特效”,但两者的差异还是挺大的。

6、声音特效一般是来自配音或者是原声采集,歌后王菲就为日本游戏《最终幻想8》演唱了主题曲。

7、Android中背景音乐是用MediaPlayer来播放,而声音特效是用OpenSL的接口来播放。

8、粒子系统是很炫的游戏技术,常常被商家当做游戏产品的卖点。

9、粒子系统中的粒子概念是来自于物理学中的物质组成的基本粒子,粒子是不停地在做无规则运动。

10、CCParticleSystem是粒子系统中的主要类,但是在实际使用中是用的它的子类CCParticleSystemQuad类。

***********************************************************

1、粒子系统中粒子的生命周期就是粒子系统的实现技术。

2、粒子系统中的粒子的出生是通过 发射器(Emitter)把 粒子池(Particle Pool)中的粒子发射出去实现的。

3、粒子发射器分为两种类型,重力模式(Gravity) 和 半径模式(Radius)

4、Cocos2D-X的安卓项目的jni目录下的Android.mk文档里会导入所用到的模块,比如:$(call import-module,cocos2dx),实际上找的是.mk文件。

5、以后Android项目所需要的Cocos2D-X模块都在Android.mk里添加,不然老是报错,比如:$(call import-add-path, G:\RUANJIANXIAZAIJI2\cocos2d-x-2.2.5)

6、在编译前必须要把库工程java导进来,否则不能正常运行程序。

7、有时候调试中报找不到图片的错误,那就有可能是没有图片资源,也就是assets里面没有程序需要的图片。

8、AppDelegate类是用来描述游戏应用的生命周期的,而不是保存了应用的不同平台的入口的。

9、通过Director里的setDisplayStats()函数可以设置是否显示FPS,也就是帧速

10、CCNode及其子类中都有一个CCCamera对象,是用于3d渲染的对象,目标是增添游戏效果

***********************************************************

1、CCDirector类是通过一个队列来管理CCScene对象的,里面有操作这个队列的函数。CCDirector负责的与OpenGL交流多。

2、Layer在叠加的时候图层间的颜色是可以混合的。

3、CCLayerColor特殊Layer,并且它还有一个特殊的子类CCLayerGradient

4、Color4b_table的使用,通过ccc4()函数来获取这个表。

5、图片显示失真问题?

6、Cocos2dxCCMultiplexLayer也是特殊的层即复合层,它的级别比普通的Layer高,可以包含多个子Layer

7、Cocos2dx中的精灵其实就是基于图片的精灵,除此之外没有其他的形式。

8、一张图片上可以包含多个子图作为不同精灵的显示内容。

9、关于精灵的缓冲有精灵图片缓冲CCTextureCache精灵帧缓冲CCSpriteFrameCache

10、 精灵集合是一种用来提高渲染器渲染精灵速度的技术。

***********************************************************

1、PNG格式的图片比其他格式的同样图片小。

2、CCMenuItem类是菜单CCMenu类中最基本的菜单项,其他的类型的菜单项都是它的子类。

3、cocos2dx中,动作系统是最具魅力的功能之一。

4、使用动作系统可以让CCNode对象移动、旋转、缩放、着色、淡进淡出或者更为复杂的行为。

5、Lua中把某个函数作为函数参数时,不能把函数的括号带上,不然相当于是函数的返回值作为参数了。

6、动作FlipXFlipY看不到效果?

7、MoveTo等延时动作的时间参数单位是:S

8、Lua怎么使用CCBezierTo动作?

9、CCActionEase是用于调节动作执行速度的特殊动作。

10、CCSpeed是直接继承CCAction的动作类,可以看做是CCAction私生子

***********************************************************

1、不仅在加载图片的时候有TextureCache,在加载精灵帧的时候有SpriteFrameCache,它们都是为了加快数据载入速度

2、Cocos2dx中为了统一各个平台的触摸操作响应的接口,用了CCEGLView类来描述。

3、触摸怎样精确到精灵对象,而不是层对象?

4、一般游戏中一个游戏关卡就对应了一个游戏场景。

5、Cocos2dx中的tile map(砖块地图)的类CCTMXTiledMap相当于CCScene的级别,但是又比它矮点。

6、CCLayer的坐标位置是以OpenGL的坐标原点作为基础的,而CCSprite的坐标位置是以CCLayer的中心点坐标作为基础的。

7、砖块地图的使用?

8、游戏中一般存在两个世界,渲染世界物理世界,其中渲染世界是必须要有的,物理世界可有可无。

9、Box2D创建的物理世界中所有的物体都是刚体,并遵循牛顿经典力学定律。

10、Box2D所创建的物理世界是必须要明确重力加速度大小方向的。

***********************************************************

1、Box2DAABB物体查询技术?

2、光线投射技术也是Box2D中的用于物体查询的技术

3、Box2D中的形状(Shape)就相当于碰撞检测中的包围盒的概念。

4、Box2D中的形状不是实际的纹理的形状,而是用于碰撞中的包围盒,分为圆形形状多边形形状

5、通过顶点(Vertex)创建多边形时,点的排列顺序必须是逆时针顺序

6、Box2D关节(Joint)物体(Body)的连接的点称为锚点(Anchor)

7、并不是所有的关节(Joint)都有驱动物体运动的功能,比如DistanceJoint距离关节就没有。

8、旋转关节要求连接的两个物体共享一个锚点。

9、Box2D引擎中逆时针是正顺时针为负

10、Lua中函数的参数如果是表的话,属于地址传递,如果是其他变量,则是值传递。

***********************************************************

1、在游戏中使用物体的步骤1)定义精灵对象 2)定义物体对象 3)把物体对象添加到对应精灵 4)给物体添加关节 5)把关节添加到物理世界。

2、SpriteBatchNode的使用?PhysicsBodysetDynamic()有什么用?

PhysicsJointRotarySpring是什么关节?PhysicsBodysetContactTestBitMask()的作用?PhysicsBodygetCategoryBitMask()的作用?

3、PhysicsBody是不能设定具体的显示位置的,但是可以获取当前显示位置,必须使用Sprite的函数才能设置显示位置。

4、以精灵为主线,要使用物理世界,那么就给精灵设置物理属性就可以了。任何的可以渲染的节点:精灵,层,场景都可以和物体对应起来,但是一般以精灵为主。

5、粒子系统是cocos2dx引擎中很炫的游戏技术,它可以制造出很漂亮的游戏画面。

6、CCParticleSystemQuad类是主要用来描述粒子系统的类,很少用它的父类CCParticleSystem

7、明白了粒子的生命周期也就知道了粒子系统的运作方式。

8、如果开发人员想要制作一些出彩的粒子效果,更好的方式是使用一些半透明的纹理图片,最好是用球形图片,其边缘存在一个透明的过渡。

9、可以创建多个粒子系统产生粒子,在不同位置,不同时候都可以,并且可以放到ParticleBatchNode类中,也可以单独的加入Layer中,因为ParticleSystemQuadNode类的子类

10、粒子系统分为重力模式半径模式两种,两种模式的效果是完全不同的。

***********************************************************

1、要想让游戏使用物理世界,那么最重要的一个设置是在创建Scene的时候用createWithPhysics(),这样创建的场景才有物理属性。

2、使用物体时,最好是把物体添加到精灵对象,如果直接添加到CCNode对象的话,容易报错。

  评论这张
 
阅读(18)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017