Поверните SKSpriteNode в другой SKSpriteNode - PullRequest
1 голос
/ 11 июля 2019

Я пытаюсь повернуть один узел спрайта на другой.Он вращается, но не очень хорошо.Как я могу это исправить?

Я пытался:

let blaster = self.childNode(withName: blaster)
let currentBlasterPosition = blaster!.position
let angle = atan2(currentBlasterPosition.y - cubes[0].position.y, currentBlasterPosition.x - cubes[0].position.x)
let rotateAction = SKAction.rotate(toAngle: angle + 90, duration: 0.0)

blaster!.run(SKAction.sequence([rotateAction]))

SKSpriteNode поворачивается на угол от -30 до 30 градусов от точки, в которой он должен быть (в зависимости от его положения).

game sprites screenshot

1 Ответ

0 голосов
/ 22 июля 2019

Вместо того, чтобы самостоятельно вычислять углы, используйте SKConstraint для этой задачи. Предполагая, что ваш cubes является массивом SKNode:

let constraint = SKConstraint.orient(to: cubes[0], offset: SKRange(constantValue:0))
blaster!.constraints = [constraint]

Вам придется сделать это только один раз, вместо каждого кадра. Ограничение автоматически применяется к каждому кадру. Чтобы удалить его, установите ограничения бластера обратно на nil:

blaster!.constraints = nil
...