SpriteKit(概述)

96
吃粑粑的毕教授
2017.10.03 17:35* 字数 1938

简介:

SpriteKit,首先简单概述一下,使用优化的动画系统、物理模拟和事件来处理2D精灵游戏。Sprite本身具有精灵的意思,可以用SpriteKit来进行图形渲染与动画处理,提供了一个传统的渲染循环之间的含量测定和绘制帧交替,对应用任意动画或更改内容或者图像渲染进行优化,更适合游戏和应用需要灵活动画的处理

正文:

SKView:

当作一个场景视图,是用来Sprite Kit内容的视图,可以使用presentScene(_:)方法来弹出场景

SKScene:

在SpriteKit中 一个SKScene对象代表一个场景的内容,是所有的精灵包对象在视图中的根节点,这个节点提供场景动画和渲染显示等内容,从目前的SKView来创建一个场景,当然包括场景的原点位置,及大小属性,如果场景与视图不匹配,可以进行缩放来适应视图,一个场景的大小决定了它的可见区域


如下图所示

默认来说,场景的原点被放置在视图的左下角,一个场景初始化高1024,宽768,原点在左下角(0,0),(1024,768)在右上角,场景的始终是节点树的根节点,默认值为0,并且不可改变

然而你可以通过锚点的属性移动场景的起源,锚点在单位坐标空间中指定,可以在包围视图中选择一个点,锚点的默认值为(0,0)点,默认的锚点对于不滚动的内容来说是很有用的如下图,锚点值为(0.5,0.5),该场景在视图的中间,场景可见的坐标空间为(宽/2,-高度/2)到(宽度/2,高度/2),当你想轻松的定位相对于屏幕中心的节点时,例如滚动场景游戏中,在锚点上居中瞄准是最有用的,当然可以用SKCameraNode来进行更好的效果展示

场景呈现后,假如说视图和场景的大小相同,则可以将内容直接复制到视图中,假如说两个不相同,将场景缩放视图中,ScaleMode属性决定了内容比例,SKScene动画和渲染场景的过程与场景对象实例,一个呈现的场景运行一个渲染循环,在处理场景节点树和渲染交替,SpriteKit会在渲染场景时,提高能源效率,让您的游戏或应用程序在后台执行其他操作。下图是场景进行渲染循环的步骤


SKNode:

想想ARKit中的节点唠,SKNode不出现任何视觉内容,主要作用是提供极限行为的其他节点的类来使用,游戏中的所有视觉元素使用的是sknode SpriteKit来预定义和绘画的,节点也有分层组织,节点树,类似于视图和子视图的工作,一个树节点以一个场景根节点和其他的字节点组成,场景节点用来运行动画循环,处理节点的操作,节点树中的每一个子节点都有一个坐标系,将子节点添加到节点树之后,设置子节点的位置属性将其定位在其父坐标系中

1.所有的节点都可以当作响应对象,可以直接响应屏幕上的节点与用户交互,还可以在坐标系之间进行转换,并进行命中测试

2.节点树中的任何节点都可以运行操作,用于激活节点的属性、添加或者删除节点、播放声音活着知性其他自定义任务。SpriteKit动画系统是行为动作的心脏。

3.节点支持物理属性,并且是模拟对象物理属性的对象,当节点具有物理属性时,物理模拟自动计算物理体的新位置,然后移动和旋转节点以匹配该位置

4.节点可以提供表示与其他节点或位置关系的约束,这些约束在场景呈现之前会被场景自动应用,另一组约束用于与执行逆运动学动画及动画组合相结合

5.操作节点必须在主线程中发生,操作节点必须在主线程中发生。所有的skviewdelegate的SpriteKit回调,SKScenedelegate和SKScene在主线程与这些安全的地方进行操作节点,如果在后台执行则执行下面代码

,

节点树的绘制规则:根节点在子节点之前绘制它的内容,子节点按照他们出现在在子数组总的顺序来呈现,简单来说也就是我们就像我们来加载物件一样easy

SKSpriteNode:

一个SKSpriteNode当然可以看作一个节点,绘制一个可颜色混合的纹理,就像一个图像,一个带颜色的正方形,可以用自定义着色器来创建自己想要的渲染效果,简单的说SKSpriteNode也是用node来绘制纹理的,精灵节点可以唤起SKLightNode对象可选的投射和接受阴影,三维照明可以通过提供单独的正常纹理或从图像自动生成正常纹理来模拟。Sprites创建给场景中大多数内的一个基本构建块,可以理解为SKSpriteNode所代表的对象

SKAction:

一个SKAction对象是一种由场景中的一个节点上执行的动作,动作最常用于改变它们所依附的节点的结构和内容,但也可以对场景进行其他更改。当场景处理其节点时,对与这些节点相关联的操作进行评估。然后通过它的动作对象,配置动作的属性。最后,执行行动,称之为节点对象的run(_:)方法(或在sknode类类似的方法)。大多数操作允许您更改节点的属性,如位置、旋转或缩放。有些动作特别适用于SKSpriteNode对象,允许你制作精灵的颜色或纹理特性。许多操作可以反转,允许您创建另一个操作对象,以反转该动作的效果

SKPhysicsBody:

给一个节点添加物理模拟对象,指定一个skphysicsbody对象的sknode对象的physicsbody属性添加到节点的物理模拟,当一个场景处理一个新的帧时,它对与场景中节点相连的物理体进行物理计算。这些计算包括重力、摩擦、及与其他物体碰撞。你也可以运用自己的力量和冲动于一身。在场景完成这些计算之后,它更新节点对象的位置和方向。注意:物理体必须在你想前一个节点对象施加外力和脉冲之前与之相关联

有兴趣一起交流学习的小伙伴,欢迎加入技术交流q群:150731459,一起进步!共同努力!

C博客地址

随笔
Gupao