在不使用 SKAction followPath 的情况下逐步围绕路径移动节点

Posted

技术标签:

【中文标题】在不使用 SKAction followPath 的情况下逐步围绕路径移动节点【英文标题】:Moving a node around a path incrementally without using SKAction followPath 【发布时间】:2015-04-16 19:39:48 【问题描述】:

我想要一条我的节点可以按需移动的路径。

例如,我想在屏幕中间有一个圆圈,当我点击屏幕左侧时,我的 SKSpriteNode 将在圆圈上以逆时针方向移动(如果我点击屏幕右侧)。

根据我的研究,我可以使用 SKShapeNode、CGPathRef 甚至 UIBezierPath 创建圆形路径。创建路径不是问题。在我看到的所有研究这个主题的实例中,大多数人只使用 [SKAction followPath:path duration:1.0] 这使得节点在 1.0 秒内完全绕过圆形路径。我希望能够向左/向右点击,并且每次点击只能移动增量空间。 (如果有人玩过 Super Hexagon,想想那个游戏的流畅圆周运动)

*注意:我只使用圆形路径作为示例,因此我并不特别需要关于如何围绕圆形移动本身的特定指针,但更多的是任何形状的任何路径。

【问题讨论】:

【参考方案1】:

您可以使用 CGPath 创建任何您想要的路径形状。这使您能够仅创建移动节点所需的路径。要使用您的圆形示例,请创建一个 90 度圆弧路径,您的节点将分别移动 4 次以完成一个完整的圆形。

如果不想使用路径,也可以使用 SKAction moveBy x,y,duration 命令。将其中的几个绑定在一起并按块顺序使用它们,您就拥有了一个通用的路径函数。

【讨论】:

以上是关于在不使用 SKAction followPath 的情况下逐步围绕路径移动节点的主要内容,如果未能解决你的问题,请参考以下文章

iOS Swift 如何为 For 循环 SKAction 使用完成处理程序

如何使用 SKAction 改变 SKSpriteNode 的位置

一次运行两个 SKAction

是否可以在 SKAction 中途结束?

使用 SKAction colorizeWithColor 使 SKSpriteNode 闪烁白色

使用带有完成处理程序的循环在多个节点上执行单个 SKAction 动画