我正在尝试将一个精灵节点旋转到另一个。它旋转但不好。我怎样才能修好它?
我试过:
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度(取决于它的位置)。最佳答案
与其自己计算角度,不如用SKConstraint来完成这个任务。
假设cubes
是一个SKNodes数组:
let constraint = SKConstraint.orient(to: cubes[0], offset: SKRange(constantValue:0))
blaster!.constraints = [constraint]
你只需要做一次,而不是每一帧。约束将自动应用于每个帧。
要删除它,请将爆炸机的约束设置回
nil
:blaster!.constraints = nil