Sprite Kit学习笔记(四)小结

来源:互联网 发布:java类string 编辑:程序博客网 时间:2024/06/07 17:57

关于Sprite Kit的api终于都看完了,苹果的官方文档写得越来越好了,排版什么的也很清晰,api首先是对SpriteKit用一个简单的demo让开发者很快的又一个大致的了解,然后分点仔细解剖,而且循序渐进,很容易便学会怎么运用了。顺带说一下,SpriteKit不止用于iOS平台,Mac OX也可以使用。

 

今天就来个总结,把api里面之前笔记里没有提到的东西都说一下,详细的东西还是建议去看回官方的api,最好能直接看懂英文的,估计现在也没有翻译过来的,翻译的东西难免会有误差,普通英语水平看官方的文档不是很难,这里主要说一些自己觉得应该注意的点,方便自己以后遇到的时候,可以翻出来查看一下。

 

按照官方文档的顺序,node action之后是关于scene的知识

 

首先是坐标系,游戏开发中必须要注意的,如果一个游戏开发者连坐标系都不知道是什么的话,还谈何开发。坐标系主要有屏幕坐标系和游戏场景里的世界坐标系,屏幕坐标系大家应该都知道,就是原点(0,0)在屏幕的左上角,而世界坐标系则在屏幕的左下角,两个坐标系可以相互转换,这个在任何游戏引擎里都会有提供一些转换函数,SpriteKit也不例外,有两个函数可以转换坐标(场景中contents里面的东西也可以根据需要,转变相对参考坐标系)convertPoint:fromNode和convertPoint:ToNode,第一个是formNode转变为当前node的坐标系,第二个则是由当前的转变为toNode的node坐标系,使用这两个函数应该注意区分两个的含义。

 

创建scene的时候可以设置其背景颜色,大小,和对于view的适应模式,另外scene也有anchorPoint属性,scene也是SKNode的子类,所以基本的一些node的属性,它都会有,设置anchorPoint有一个好处,如果你的游戏是横板过关类游戏,或者一些冒险地图之类的,即角色移动场景也会随着出现,这个时候应该设置anchorPoint为(0.5,0.5)即中心位置,在SpriteKit中是不存在Camera这个东西的,但是我们可以自己拟造一个,同样是一个Node,让它时刻跟踪锁点角色,然后根据camera的位置变化调整个场景的变化。

 

scene中,父node先于子node渲染,根据z  value,小的先渲染,z value可以当作我们视野的远近距离,同时,z value越小即距离camera越近,其depth值就越高,一些类似touch操作的会先对其产生影响。另外,对父node的一些操作会连带影响其子,而对子node的操作则不会。

 

学会怎么寻找scene中存在的node也是很重要的,可根据node.name查找。

 

再就是scene的跳转了,SpriteKit提供了很多跳转方式,跳转的时候,可以对当前场景进行一些操作,比较重要的一点,scene之间的交互,即数据传递,scene的转换不像viewcontroller那样有自带的delegate可以完全数据传递,这里我们需要自己完成delegate的部分,完成数据交换。

 

Sprite Kit还包含其他的一些node类型,可帮助我们完成游戏需要的一些效果特技之类的。

 

基本的node,labelnode,shapenode,videonode等,这些比较简单。除了这些之外,SpriteKit还为我们提供了强大的粒子系统,即emitternode,Sprite Kitframework本身自带有类似雨雪烟等粒子系统,可以直接导入使用,也可以在xcode里面创建自己的粒子系统,接下来做个demo,把具体的步骤细节的都放上来,官方的文档也说得很详细,其实很unity自带的粒子系统的那些属性什么的很相似,原理是相通的,都可以直接在editor里面通过创建后修改参数调整自己的粒子系统。

 

除了强大的粒子系统,还有effectnode这个东西,其实对于这个类型的node,自己没什么多大的理解,SKScene竟然是它的子类,可能要回去再仔细看一下文档,也是一个挺重要的node。

 

接着是scene对其contents的一些关于执行、渲染操作的东西

 

在笔记一中有提到过的,一帧里面scene会做的事情,根据那张表格可以很清楚的看到整个过程,这里不再多说,了解整个执行操作过程是很重要的,要知道,在那么短的时间里做那么多的事情,对CPU来说要求很高,开发者必须尽可能的减少一些无谓的消耗内存或者占用cpu的操作,让整个过程尽可能的顺畅,对于没有用到的不出现在当前画面的内容尽量的释放掉,减少内存的负担,这个无论做什么游戏都应该要注意的,SpriteKit提供了很多优化的方案,在渲染方面,效率是很高的。

 

最后说到的当然是物理系统啦。

 

在物理系统方面,SpriteKit也是相当强大的,SKPhysicBody可以创建node的physicsbody,对于physicsbody,SpriteKit做得很完善,基本上该考虑的东西都有,不像cocos2d那样要根据双方物体的rect去检测碰撞,设置physicsbody属性便可以实现碰撞功能。可以设置摩擦力,可以对物体施加外力促使其运动,对于所添加的physicsbody有static的也有dynamic的,有很大的区别,找天仔细研究研究,写一篇专门讲物理系统的笔记,确实,文档里面的东西真的很多,SpriteKit提供的物理系统真的很强大。

文档的最后提到了一些让你的游戏变得更好的一些建议和方法,都是一些细节的东西。接下来,官方还给出了一个demo,一个冒险游戏,接下来一段时间是学习整个demo,到时在过程中遇到的关于细节的东西再研究记录一下。

0 0
原创粉丝点击