介绍SpriteKit
SpriteKit是Apple的2D游戏引擎,它是基于OpenGL构建的渲染引擎。 它是在iOS 7中引入的,每个后续发行版都为框架带来了许多补充。 通过使用带纹理的精灵,内置的物理引擎和功能非常强大的SKAction
类,您可以非常快速地构建实用的2D游戏。
SpriteKit具有用于场景和粒子的内置编辑器,自iOS9发行以来的相机节点以及自iOS 10发行以来对图块的内置支持。有了这些新功能,SpriteKitSwift成为创建2D游戏的强大动力。
下面是内置场景编辑器的图像,带有标签,彩色精灵和带纹理的精灵。
渲染循环
与大多数游戏引擎一样,SpriteKit使用渲染循环来渲染和更新屏幕。 渲染循环通过以下步骤渲染每个场景:
- 更新场景及其对象
- 评估行动
- 模拟物理
- 应用约束
- 渲染场景
每个步骤都有一个对应的方法,您可以挂钩以应用其他逻辑。 渲染循环方法如下:
-
update
-
didEvaluateActions
-
didSimulatePhysics
-
didApplyConstraints
-
didFinishUpdate
例如,如果要手动移动场景中的对象,则update
方法将是您要使用的方法。 或者,如果您的对象受动作或物理影响,则可以绑定相应的方法,以确保在进行任何更改之前应用这些动作和物理模拟。
SKNode
SKNode
类是SKNode
的基本构建块。 屏幕上的所有资产将是SKNode
或其子类。
SKNode
类本身不会绘制任何视觉资产。 它的主要作用是提供其他类实现的基线行为。 例如, SKScene
类是SKNode
实例树中的SKNode
,用于保存精灵和其他需要渲染的内容。
渲染和动画由SKView
实例完成。 该视图放置在窗口内, SKScene
添加了一个SKScene
实例,只要该视图处于活动状态,该场景就会被渲染和动画化。 您可以在窗口中使用单个SKView
实例,并随时在不同场景之间切换。
该框架定义了许多其他SKNode
子类。 场景中最常用的一种是SKSpriteNode
类。 SKSpriteNode
类可以绘制为矩形,并使用SKTexture
将图像映射到其上以创建子画面,也可以绘制为有色,无纹理的矩形。 您通常会使用带纹理的精灵,因为这是将游戏的美术作品栩栩如生的方式。
其他重要的节点类型包括:
-
SKShapeNode
,呈现由Core Graphics路径定义的形状 -
SKVideo
,显示视频内容 -
SKLabel
,显示文本标签
在本系列后面的部分中,我们将介绍SKNode
几个此类。
SKAction
SKAction
类是一个非常强大的类,用于使您的节点栩栩如生。 SKAction
可以随时间更改节点的属性,例如通过移动,缩放或旋转它们。 您可以按顺序将动作链接在一起,作为一个组一起执行许多动作,然后在循环中重复执行。 您也可以使用SKAction
运行自定义代码块。 例如,假设您想在节点移动后打印出它的坐标。 您可以在SKAction
运行自定义代码块来完成此操作。
SpriteKit功能
物理
SpriteKit具有内置的物理引擎,使处理复杂的物理场景变得轻而易举。 它建立在流行的Box2D框架之上,它使您能够响应碰撞和接触事件,施加力和重力,并使用诸如销钉和弹簧之类的接头构建非常复杂的物理模拟。 您可以使用场景编辑器以可视方式将物理添加到节点,也可以以编程方式添加物理。
坐标系
在SpriteKit中,坐标(0,0)
位于屏幕的左下方而不是左上方,如果您使用过Flash,Corona,HTML5 Canvas和许多其他游戏框架,则可能会习惯于此。 左下角是OpenGL约定,而SpriteKit遵循它,因为SpriteKit在后台使用了OpenGL。
粒子系统
SpriteKit具有非常强大的粒子引擎,可用于模拟火和烟等粒子系统。 还有一个内置的粒子编辑器,您可以在其中直观地布置粒子系统。 如果您喜欢坚持使用代码,则可以使用代码从头开始对这些系统进行编程。
下图是带有火状粒子系统的粒子编辑器的图像。
瓷砖
SpriteKit有许多专门用于构建平铺布局的类。 与使用非常大的单个图像相比,使用tilemap提供更好的内存使用。 瓦片可以布置成矩形,六边形或等距网格。
下图是使用矩形网格的图块地图节点的图像。
结论
这些是SpriteKit引擎的一些亮点。 我建议阅读SpriteKit概述,以了解有关它提供的更多信息。 要了解有关SpriteKit入门的更多信息,您还应该在Envato Tuts +上查看Davis Allie的帖子。
翻译自: https://code.tutsplus.com/tutorials/introducing-spritekit--cms-28648