Я пытаюсь передать SKNode в качестве параметра функции, поэтому я могу получить доступ к атрибутам SKNode, таким как position/p в функции.
class GameScene: SKScene {
let node = SKShapeNode()
let swipeRightRec = UISwipeGestureRecognizer()
var pathToDraw = CGMutablePath()
override func didMove(to view: SKView) {
pathToDraw.move(to: CGPoint(x: 100.0, y: 100.0))
pathToDraw.addLine(to: CGPoint(x: 125.0, y: 50.0))
node.path = pathToDraw
//trying to pass created node in the swipedRight function
swipeRightRec.addTarget(self, action: #selector(GameScene.swipedRight(node)))
swipeRightRec.direction = .right
self.view!.addGestureRecognizer(swipeRightRec)
}
// the swipe right function that accepts a SKShapeNode
@objc func swipedRight(node: SKShapeNode) {
let path = node.path
}
}
Ошибка, которую я получаю:
Член экземпляра 'swipedRight' не может использоваться в типе 'GameScene'; Вы хотели вместо этого использовать значение этого типа?





В шаблоне цель/действие (первый) параметр любого действия должен быть объектом, который выполняет действие.
@objc func swipedRight(_ sender: UISwipeGestureRecognizer) { ... }
и добавьте селектор только с именем метода
swipeRightRec.addTarget(self, action: #selector(swipedRight))
Но поскольку узел в любом случае является свойством, нет необходимости передавать его в качестве параметра.
Просто используйте линию, которая у вас есть. node доступен в акции.
Но тогда как я могу изменить путь узла относительно его исходного пути? Это то, что я пытаюсь сделать в 'swipedRight'