Мне интересно, связана ли проблема с расположением моих узлов, а не с кодом, но я не могу заставить эту линию работать должным образом. Я хотел бы нарисовать прямую, перетаскиваемую линию от точки касания до положения касания. Затем узел переместится в положение, где касание закончено. Мой код основан на том, что я видел здесь, но до сих пор не могу его отобразить. Этот соответствующий узел является подклассом SKSpriteNode
, и этот код находится в этом классе, а не в основном классе GameScene
.
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
self.childNode(withName: "line")?.removeFromParent() // Remove any previous line
guard let touch = touches.first else { return }
let positionInScene = touch.location(in: self.parent!) // Use 'parent' here?
let path = CGMutablePath()
let line = SKShapeNode(path: path) // Create shape node with path as path
line.name = "line"
line.zPosition = 5000 // Just trying to make sure it's on top
line.strokeColor = UIColor.red
line.lineWidth = 20
line.fillColor = UIColor.red
path.move(to: CGPoint(x: self.position.x, y: self.position.y))
path.addLine(to: CGPoint(x: positionInScene.x, y: positionInScene.y))
self.addChild(line)
}
Когда я создаю и добавляю путь в touchesBegan
, он появляется, но это рисует кучу линий, где я хочу только одну.