2017-06-21 72 views
2

我正在使用以下代碼來使Sprite節點在Xcode spritekit中的圓圈中移動。Sprite節點的起始位置

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

+0

[開始的可能的複製和UIBezierPath的結束角度?](https://stackoverflow.com/questions/32165027/start-and-end-angle-of-uibezierpath) –

回答

2

CGPath(ellipseIn:...)是這產生一個橢圓形,其中,「參數」或「角」從0到2π的路徑 一個實用程序方法。

不能添加一個「偏移」的後續行動,但你可以定義 的方式的路徑,它開始於圓的「左端」:

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

正如Martin所說 - 精靈會在繪製完成後正確地遵循這個補丁。 –

+0

謝謝馬丁!我試圖「抵消」,但它不起作用。乾杯! – Questions