我正在尝试将一个精灵节点旋转到另一个。它旋转但不好。我怎样才能修好它?
我试过:

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度(取决于它的位置)。
swift - 将SKSpriteNode旋转到另一个SKSpriteNode-LMLPHP

最佳答案

与其自己计算角度,不如用SKConstraint来完成这个任务。
假设cubes是一个SKNodes数组:

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

你只需要做一次,而不是每一帧。约束将自动应用于每个帧。
要删除它,请将爆炸机的约束设置回nil
blaster!.constraints = nil

09-30 13:21