SKSceneで特定のNodeを削除することは可能ですか?
SKSceneで曲線を描画するようにしました。
タッチイベントの都度、その位置に曲線が移動しますが、移動の度に、前回描画した曲線を消去してから新しい曲線を描きます。
下記コードだと、全てのノードを削除してから新しい曲線を書いていますが、それではなく、前回行がした曲線のみを消去してから新しく曲線の描画ができるようにするにはどうすればよろしいでしょうか?
ご教授お願いします。
以下サンプルコードimport SpriteKit
class GameScene: SKScene {
// 始点を記憶するインスタンス変数
var firstTouchPoint = CGPointZero
// 以前に描画したものがあれば、消去。
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.removeAllChildren()
// 始点を記憶。
firstTouchPoint = self.convertPointFromView((touches.first?.locationInView(view))!)
}
// UIKitの座標系は、左上が原点なのに対し、SpriteKitの原点は左下なので、座標変換する。
// 終点を記憶。
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
//中心位置
let midX = CGRectGetMidX(self.frame)
let midY = CGRectGetMidY(self.frame)
// CGPathを生成。
let path = CGPathCreateMutable()
// 描画のペンを始点に移動。
CGPathMoveToPoint(path, nil, firstTouchPoint.x, firstTouchPoint.y)
// カーブを描く。
CGPathAddCurveToPoint(path, nil, (firstTouchPoint.x + midX) / 2.0 , (firstTouchPoint.y + 150), midX, firstTouchPoint.y, midX, midY)
// pathからSKShapeNodeを生成。
let shapeNode = SKShapeNode(path: path)
// 線の色を指定。
shapeNode.strokeColor = SKColor.whiteColor()
// 線の太さを指定。
shapeNode.lineWidth = 3.0
// Sceneに乗せる。
self.addChild(shapeNode)
}
}