精灵行动指南

精灵行动指南

原文:https://medium.com/hackernoon/a-guide-to-spritekit-actions-c20b079f5398

继续我最近关于 SpriteKit 的帖子,我想我会经历框架的另一个有用的方面:SpriteKit 动作。由SKAction类表示的 SpriteKit 动作允许你在一个SKNode对象上制作某些属性的动画,比如位置和速度。

既然有许多类型的 SpriteKit 动作(参见 [SKAction](https://developer.apple.com/reference/spritekit/skaction) 参考),让我们采取一个更实际的路线来使用节点上的动作,而不是经历不同类型的动作。

创建操作

与许多不同的 SpriteKit 对象不同,你不用初始化器来创建一个SKAction。相反,您可以调用与您想要执行的操作相对应的类方法之一。

在这个例子中,moveBy方法创建了一个动作,在 800 毫秒的时间内将一个节点向右移动 10 个像素,向下移动 15 个像素。其他动作方式有rotatescalefadeOutapplyForce

运行操作

要在一个节点上运行这个操作,在您想要应用操作的节点上调用run(SKAction)方法。

基于前面的例子,这将通过添加传递给moveBy调用的值在 800 毫秒内更新玩家的位置。run方法的一个变体接受在动作完成后调用的完成回调。

关于SKActions的一个有用之处是它们是“写时复制”,这意味着无论何时动作被改变,值都被复制,因此同一个SKAction可以在多个节点上使用。

组和序列

有时,需要同时或按顺序运行多个操作。为了实现这一点,方法SKAction.group([SKAction])SKAction.sequence([SKAction])分别创建动作的组和序列。例如,我们需要同时移动和旋转我们的玩家节点。

在上面的例子中,我们可以将group调用改为sequence,这将首先运行moveAction,等到它完成,然后运行rotateAction

重复

多次运行一个动作同样简单:调用SKAction.repeat(SKAction, count: Int)传递要重复的动作和应该运行的次数。这与任何其他操作一样使用。

现在我们的玩家节点上下移动五次。要永远重复一个动作,可以用要无限重复的动作调用SKAction.repeatForever(SKAction)

时机

几乎每种类型的动作都有一个持续时间参数,它是一个以秒为单位的TimeInterval(一个Double的类型别名)。这告诉引擎运行该操作一定的秒数(或几分之一秒)。还有另一种类型的动作,wait(forDuration: TimeInterval),它会等待动作的持续时间。这在动作序列中很有用,可以在动作之间留出时间。

块和自定义操作

还有另一个执行代码块的类方法run(_: () -> Void)run的参数是一个不带任何参数并返回Void的函数。这允许你做常规SKAction范围之外的事情,比如更新 UI 或者改变分数。

自定义操作稍微有点复杂。方法customAction(withDuration: TimeInterval, actionBlock: @escaping (SKNode, CGFloat) -> Void)创建一个在指定持续时间内运行的动作,同时不断调用actionBlock的节点(SKNode)和运行时间(CGFloat)直到持续时间。

这段代码片段创建了一个动作,将标签节点的文本从0s向上计数到5s

停止操作

有两种基本方法可以在动作运行时停止它们:在节点上调用removeAllActions()removeAction(forKey: String)。前者将停止当前在节点上运行的所有动作,而后者将在调用run(SKAction, withKey: String)时,根据赋予动作的唯一键删除动作。

在我最近的 SpriteKit 游戏蓝移中,我大量使用了SKActions来移动瓷砖。去 App Store 看看吧!此外,看看我的其他 SpriteKit 帖子,基础物理。如果您有任何问题,请在此评论或在 Twitter 上发推文或 PM 我。快乐的精灵!

[## App Store 上的蓝移磁贴

阅读评论,比较客户评级,查看截图,并了解更多关于 Blueshift 瓷砖。下载蓝移磁贴…

itunes.apple.com](https://itunes.apple.com/us/app/blueshift-tiles/id1205081032?mt=8)

黑客中午是黑客如何开始他们的下午。我们是阿妹家庭的一员。我们现在接受投稿并乐意讨论广告&赞助机会。

如果你喜欢这个故事,我们推荐你阅读我们的最新科技故事趋势科技故事。直到下一次,不要把世界的现实想当然!


本站为非盈利网站,作品由网友提供上传,如无意中有侵犯您的版权,请联系删除