【发布时间】:2016-07-14 02:50:01
【问题描述】:
我有一条路径和一个 SKShapeNode,并希望 SKShapeNode 永远跟随路径(六边形)。
let pathHexagon:SKShapeNode = SKShapeNode()
let player:SKShapeNode = SKShapeNode()
pathHexagon.path = playerHexagonPath(pathHexRadius)
pathHexagon.position = CGPoint(x: CGRectGetMidX(frame), y: CGRectGetMidY(frame))
pathHexagon.strokeColor = UIColor.blackColor()
pathHexagon.lineWidth = 5
addChild(pathHexagon)
player.path = playerPath(playerSize)
player.position = CGPoint(x: CGRectGetMidX(frame), y:CGRectGetMidY(frame))
player.strokeColor = UIColor.blackColor()
player.fillColor = UIColor.blackColor()
addChild(player)
let action = SKAction.followPath(playerHexagonPath(pathHexRadius), speed: CGFloat(300.0))
player.runAction(SKAction.repeatActionForever(action))
它有点工作,但起始位置每个周期都会改变:
为什么会这样?
最终我想将此动画链接到用户输入。作为练习,我正在尝试复制 Super Hexagon。因此,如果您知道更好的方法,也请告诉我。
【问题讨论】:
-
您必须使用+ followPath:asOffset:orientToPath:speed: 方法并将
offset参数设置为false。调用+ followPath: speed:方法相当于调用followPath:asOffset:orientToPath:speed:方法,同时将true传入offset和orient参数。 -
我已经发布了类似的答案here
-
@Whirlwind 谢谢。这确实导致它不再在每个周期都移动。然而,它现在移动到屏幕外的某个地方(到左下角)。所以现在的起始位置似乎是错误的。禁用 player.position 无效。
-
我不知道你的其余代码是什么样子的。此外,我现在没有时间尝试您的示例,但如果您可以编辑您的问题,以便我可以复制并粘贴它以重现该问题,我稍后可能会提供帮助。
-
感谢您的麻烦:我已经上传到 GitHub:github.com/farayman3/HexagonPractice
标签: swift sprite-kit skaction cgpath