介绍SpriteKit

SpriteKit是Apple的2D游戏引擎,它是基于OpenGL构建的渲染引擎。 它是在iOS 7中引入的,每个后续发行版都为框架带来了许多补充。 通过使用带纹理的精灵,内置的物理引擎和功能非常强大的SKAction类,您可以非常快速地构建实用的2D游戏。

SpriteKit具有用于场景和粒子的内置编辑器,自iOS9发行以来的相机节点以及自iOS 10发行以来对图块的内置支持。有了这些新功能,SpriteKitSwift成为创建2D游戏的强大动力。

下面是内置场景编辑器的图像,带有标签,彩色精灵和带纹理的精灵。

介绍SpriteKit

渲染循环

与大多数游戏引擎一样,SpriteKit使用渲染循环来渲染和更新屏幕。 渲染循环通过以下步骤渲染每个场景:

  1. 更新场景及其对象
  2. 评估行动
  3. 模拟物理
  4. 应用约束
  5. 渲染场景

每个步骤都有一个对应的方法,您可以挂钩以应用其他逻辑。 渲染循环方法如下:

  1. update
  2. didEvaluateActions
  3. didSimulatePhysics
  4. didApplyConstraints
  5. 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

瓷砖

SpriteKit有许多专门用于构建平铺布局的类。 与使用非常大的单个图像相比,使用tilemap提供更好的内存使用。 瓦片可以布置成矩形,六边形或等距网格。

下图是使用矩形网格的图块地图节点的图像。

介绍SpriteKit

结论

这些是SpriteKit引擎的一些亮点。 我建议阅读SpriteKit概述,以了解有关它提供的更多信息。 要了解有关SpriteKit入门的更多信息,您还应该在Envato Tuts +上查看Davis Allie的帖子。

翻译自: https://code.tutsplus.com/tutorials/introducing-spritekit--cms-28648