首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

【WiEngine 游戏发动机】基础(1)搭建一个最简单的Demo:添加一个精灵

2013-03-17 
【WiEngine 游戏引擎】基础(1)搭建一个最简单的Demo:添加一个精灵通过这个demo将了解WiEngine创建一个游戏的

【WiEngine 游戏引擎】基础(1)搭建一个最简单的Demo:添加一个精灵

通过这个demo将了解WiEngine创建一个游戏的基本流程,在看代码之前先了解一下一些基本概念。

copy自官网:

基本概念

坐标系

Android的缺省坐标系是原点在左上角,x和y轴的正向是往右和往下。而OpenGL的坐标系是原点在左下角,x和y轴的正向是往右和往上。WiEngine采用了OpenGL的坐标系,所以要注意设置某些坐标的时候,是要相对于左下角来说的。

场景(Scene)

不管是应用还是游戏,都可以认为是由一个个界面组成的,界面之间的跳转就形成了这个应用或者游戏的操作流程。在WiEngine里,这一个个界面叫做场景。一个典型的游戏,应该是包含一个载入界面,一个菜单界面再加一个游戏界面,那么就可以划分为三个场景。WiEngine提供了场景对象,同时支持场景之间切换的各种特效。

节点(Node)

从类结构上去看,场景并不是最顶层的类,它实际上是Node的子类。节点是WiEngine中的顶层概念,它代表游戏中的某个“东西”。做个不是特别恰当 的比方,它类似于Java中的Object类。Node类是很多类的父类,比如菜单,比如贴图,等等。节点可以包含子节点,因此它们可以形成一个树型的结构,在游戏绘制时,它从根部开始,一直绘制完所有节点,就完成了一帧的渲染。

节点有一些比较基本,也是比较关键的概念:

  1. 大小:节点一般是有个大小的,可以通过setContentSize来设置一个节点有多大。大小为0也没问题,只要确实需要。
  2. 锚点(Anchor):锚点是相对于节点本身的坐标系来说的,通过setAnchorPercent方法设置锚点的相对位置。比如说,锚点是(0.5, 0.5), 而节点的大小是100×200, 那么这个锚点相对于本节点的坐标是(50, 100)。节点缺省的锚点位置是(0.5, 0.5), 也就是在节点的中间.
  3. 位置:节点的位置可以通过setPosition方法设置。但是位置具体表示哪个点则受到relativeAnchorPoint标志的影响。当该标志为true时,位置和锚点是同一个点,当为false时,位置表示节点的左下角,和锚点是不同点。这个逻辑可能理解起来有点奇怪,由于WiEngine参考了cocos2d的一些命名,所以这个标志的名称也沿用了过来。但是我们觉得relativeAnchorPoint这个标志的名称起的有些令人费解,不排除在WiEngine的后续版本中修改该标志名称。relativeAnchorPoint不管是true还是false,一些基本操作,比如旋转,缩放等,都会根据节点锚点来进行。

导演(Director)

翻译成导演其实没错,但是感觉怪怪的,还是用Director吧。Director是单例模式的,游戏开始结束时都需要调用Director的方法进行初始化或者销毁工作。Director提供了一些管理场景的方法,比如runWithScene, pushScene, replaceScene等,通过这些API可以实现在各个场景之间切换。

也可以通过Director设置或者获取一些系统信息,比如调整一些OpenGL相关的设置,得到屏幕大小等,因此Director也是开发者和WiEngine系统间的一个桥梁。

层(Layer)

层也是节点的子类,它可以做为场景的子节点加入到场景中。所以场景也可以有多个层,可以根据需要显示不同的层,当然,你也可以不用层,这些都由你来把握。

精灵(Sprite)

Sprite在WiEngine中主要就是代表一个图片相关资源,比如从某个PNG图片中载入的一个人物形象。Sprite是节点的子类,所以Sprite具有节点应该具有的一些特性。另外还有一个AtlasSprite,它和Sprite的区别只是图片的来源不一样,关于什么是Atlas请看下一小节。

图片集(Atlas)

OpenGL对贴图的宽高尺寸有一个2的整数幂的要求,也就是长宽必须是2, 4, 8, 16, 32, 64等等。但是大部分时候图片都不是正好这个大小,这样的话每个图片都可能浪费一些内存,累积起来就会比较可观。为了节省资源,可以把若干张图片拼成一大张,这张大图片就叫做图片集。在使用时,图片集被整个载入,但是绘制的时候,可以只绘制指定的部分,这样就好像是单张图片一样了。AtlasSprite就是指这个Sprite来自于某个图片集,它一般要结合TextureAtlas使用,图片的载入工作是由TextureAtlas完成的,AtlasSprite只是指定一下绘制区域的相关坐标。

动作(Action)

游戏里经常会需要进行一些动画或者交互操作,Action为这种需求提供一种通用框架。Action说明了一个效果该怎么去做,而节点是效果的载体,通过Node.runAction()方法,可以在任意节点上执行一个Action。Action有许多子类,每个都对应于一种动作或者特效,而且多个Action还可以组合起来构成新的效果,比如同时既旋转又缩放。

================================================================================


创建一个Android项目,将WiEngine的库导入进去,创建一个Activity并实现IDirectorLifecycleListener接口,代码如下:





转载请注明出处:http://blog.csdn.net/Vestigge




热点排行