私は、カスタムSKActionを作成することができますはSKActionスウィフト
//Setup
let node = SKNode()
node.position = CGPoint(x: 50, y: 50)
let destination = CGPoint(x: 100, y: 100)
//Move from node's current position half way towards the destination
let action = SKAction.move(from: node.position, halfWayTo: destination, duration: 1)
node.run(action)
が、標準に合わせて:私は、このように使用
extension SKAction {
class func move(from: CGPoint, halfWayTo: CGPoint, duration: TimeInterval) -> SKAction {
let midPoint = CGPoint(x: (from.x + halfWayTo.x)/2, y: (from.y + halfWayTo.y)/2)
return SKAction.move(to: midPoint, duration: duration)
}
}
:
SKAction.move(to: destination, duration: 1)
私はむしろ言うことができるでしょう:
let action = SKAction.move(halfWayTo: destination, duration: 1)
node.run(action)
しかし、カスタムSKActionの内部から 'ノード'を参照する方法がわからないので、その位置を取得して中間点を計算できますか?
私はしました似たようなことをしようとしていましたが、私はそれをする方法を考えることができません。あなたが気づいたように、 'SKAction.move(halfwayTo:)'を呼び出すとき、 'SKAction'は問題の' SKNode'へのアクセス権を持ちません。 'SKNode'へのあなたの拡張は興味深い考えですが、元の例のように' SKAction'を拡張して出発点を渡すと思います。私たちが 'SKAction'を作成していることをコードで明確にするのが良いでしょう。 – GreatBigBore
私はそれがSKActionの拡張版として優れていることに同意します。 – Adahus