swift - 将 SKSpriteNode 旋转到另一个 SKSpriteNode

标签 swift sprite-kit

我正在尝试将一个 sprite 节点旋转到另一个。它旋转但不好。我该如何解决?

我试过:

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

最佳答案

与其自己计算角度,不如使用 SKConstraint为了那个任务。 假设您的 cubes 是一个 SKNodes 数组:

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

您只需执行一次,而不是每一帧。约束会自动应用于每一帧。 要删除它,请将 blaster 的约束设置回 nil:

blaster!.constraints = nil

关于swift - 将 SKSpriteNode 旋转到另一个 SKSpriteNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56986152/

相关文章:

swift - UISplitViewController 检测后退按钮按下

ios - 无法获取用户当前位置

ios - 如何创建重播按钮并重置内容?

ios - 将图片存入内存NSArray或者SKAction

ios - 使用 map 边界和固定 y 位置将相机约束在角色上 - SpriteKit

ios - 项目在新的 XCode 6 中运行后出现 144 次致命故障

ios - 如何在 WebKit View 中获取点击元素的 Id?

swift - 无法推断通用参数 'S' + 对成员 'count' 的引用不明确

swift - 场景转换的声音,不会口吃

ios - SKSpriteNode 忽略物理停用