
208
|
第
6
章
animatedSprite.run(SKAction.repeatForever(animationAction))
讨论
SKAction
类能够实时改变精灵的纹理贴图。如果我们想基于连续位图来生成动画,
我们所需要做的仅仅是将所有位图转换为
SKTexture
对象,然后保存到一个数组中。
在调用
animate(with:, timePerFrame:)
方法创建动画动作时,我们将这个数组以
及一个平均帧播放时间作为参数传递给它。假设我们需要让动画以
30
帧
/
秒的速
度播放,则每帧的平均播放时间为
1/30
秒(
0.033
秒
/
帧)。
要获得
SKTexture
对
象以便渲染,我们可以用
SKTexture
的
SKTexture(imageNamed:)
初始化方法,也可以通过包含它们的纹理图集来获得。我们曾经在本章
6.11
节中
讨论过纹理图集,这是一种将帧动画进行集中管理的绝好办法。它不但节省内存,
而且能保证动画中的每一帧都不会被丢失,当动画加载比较多的帧时游戏不会因此
出现短暂卡顿。
6.19
视差滚动
问题
通过
Sprite Kit
,我们想显示一个
2D
场景,但同时也要具有一定的深度,即当镜头
移动时,远处的物体比近处的物体要移动得慢。
解决方案
实现视差滚动的方法依赖于游戏的细节。在这个答案里,我们会创建一个包含
4
个
部分的场景,根据距离远近的不同,依次为:
•
一条山间土路。
•
旁边的山峦。
•
远处的山峦。
•
天空。