Как изменить путь SKShapeNode на лету? - PullRequest
0 голосов
/ 24 декабря 2018

где-то в didMove, я создаю SKShapeNode:

path.move(to: points.first!)

let linearShapeNode = SKShapeNode()
linearShapeNode.path = path
linearShapeNode.strokeColor = .black
linearShapeNode.lineWidth = 3.0
linearShapeNode.lineCap = .round
someSprite.addChild(linearShapeNode)

path является членом класса:

var path: CGMutablePath

Затем в update методе сцены я добавляю строки впуть:

path.addLine(to: points[index])

Я ожидаю увидеть новые линии на спрайте.Тем не менее, новые строки не появляются.Если после addLine я переназначаю путь к пути SKShapeNode, я вижу его.Но это не выглядит оптимальным для рисования заново.

Как правильно обновить путь в SKShapeNode?Чего я хочу добиться, так это видеть новый отрезок линии каждые полсекунды.

1 Ответ

0 голосов
/ 24 декабря 2018

Вы не можете обновить путь, вы можете только заменить его новым путем (даже если это означает, что нужно взять копию пути, сделать его изменяемым, а затем переназначить его обратно на ваш узел)

SKShapeNode использует копию назначенного ему пути, поэтому даже если вы используете изменяемый путь, вы не увидите изменений.

Самое простое, что вам нужно сделать - это после того, как вы измените путь, назначьте его еще раз своей фигуре.

...