2017-06-02 33 views
2

我不知道我應該使用什麼工具來做我想做的事情,因爲我只是非常熟悉SKSpriteNodes和SKShapeNodes。如何將這些轉換應用於SpriteKit中的一行

我的任務如下:

  • 添加一行到現場,SKShapeNode?
  • 沿着它的底點(開始點?)旋轉一定角度。想象一下這樣的時鐘指針,圍繞底點
  • 旋轉查找最高點的新點(X,Y座標)(終點?)行已被翻譯

後有誰知道我可以做到這一點?我目前正在爲我的線使用SKShapeNode並使用.zRotation旋轉它,但我似乎無法完成我的目標。似乎沒有SKShapeNodes的achorPoint屬性,所以我無法更改旋轉點。另外我如何找到我行的終點的位置後,已旋轉毫無章法,我創建它,如下所示:

​​

我使用旋轉:

 public func rotate(angle: Double) { 
     var transform = CGAffineTransform(rotationAngle: CGFloat(angle)) 
     line.path = linePath.mutableCopy(using: &transform) 
    } 
+0

嘿那裏,我的回答是否幫助你?如果沒有,讓我知道,所以我可以嘗試爲你更新它。 – Fluidity

回答

0

如果您注意到您的FPS下降,SKShapeNode可能非常昂貴。此外,您還可以輕鬆地將一個形狀變成精靈獲得.anchorPoint,但警告說,anchorpoint的行爲並不總是如預期,你可能以後(特別是物理)錯誤:

func shapeToSprite(_ shape: SKShapeNode) -> SKSpriteNode { 
    let sprite = SKSpriteNode(texture: SKView().texture(from: shape)) 
    sprite.physicsBody = shape.physicsBody // Or create a new PB from alpha mask (may be slower, IDK) 
    shape.physicsBody = nil 
    return sprite 
} 

override func didMove(to view: SKView) { 
    let shape = SKShapeNode(circleOfRadius: 60) 
    let sprite = shapeToSprite(shape) 
    sprite.anchorPoint = CGPoint() 
    addChild(sprite) 
} 

否則,你是將不得不1),用正確的旋轉重畫線,2),旋轉的形狀,然後重新放置在一個新的位置...

這兩個都將數學:[所以希望anchorppoint作品你

相關問題