精灵节点

时间:2017-06-21 07:46:18

标签: swift sprite-kit skspritenode

我正在使用以下代码使一个精灵节点在Xcode spritekit中以圆形移动。

let circleDiameter = CGFloat(100)
// center our path based on our sprites initial position
let pathCenterPoint = CGPoint(
    x: object.position.x - circleDiameter,
    y: object.position.y - circleDiameter/2)
// create the path our sprite will travel along
let circlePath = CGPath(ellipseIn: CGRect(origin: pathCenterPoint, size: CGSize(width: circleDiameter, height: circleDiameter)), transform: nil)
// create a followPath action for our sprite
let followCirclePath = SKAction.follow(circlePath, asOffset: false, orientToPath: false, duration: 3)
// make our sprite run this action forever
object.run(SKAction.repeatForever(followCirclePath).reversed(), withKey: “moving”)

       world.addChild(object)

问题是,精灵节点起始位置始终位于圆形路径的右侧。我知道我可以使用.reversed()来改变精灵节点的方向,但这不是我要问的。

如何更改"起点"到圆路径的左侧?

谢谢大家!请参考下图:D

Example of Question

1 个答案:

答案 0 :(得分:2)

CGPath(ellipseIn:...)是一种创建路径的实用工具方法 一个椭圆,其中“参数”或“角度”从0到2π。

您无法在跟随操作中添加“偏移量”,但您可以定义 路径从圆圈的“左端”开始:

let circlePath = CGMutablePath()
circlePath.addArc(center: pathCenterPoint, radius: circleDiameter,
                  startAngle: -.pi, endAngle: .pi, clockwise: false)