【问题标题】:swift: SKSpriteNode not rotating in update functionswift: SKSpriteNode 不在更新功能中旋转
【发布时间】:2014-10-23 14:19:23
【问题描述】:

我正在尝试旋转作为 SKSpriteNode 的骨骼图像。我创建了它并在更新时尝试运行一个可以旋转它的 SKAction。这没有任何作用。我什至尝试在每次更新时将 zRotation 降低 10 度,但仍然没有任何反应。我确信应用程序没有被冻结,因为当我在更新时执行 println 时,文本一直在滚动。此外,应用程序的其他部分正在响应。它只是没有旋转的骨头。

代码:

开课声明

let bone = SKSpriteNode(imageNamed: "bone")
let rotateBone = SKAction.rotateByAngle(30, duration: 1)

在 didMoveToView 中设置

bone.anchorPoint = CGPointMake(0.5, 0.5)
bone.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))
bone.zRotation = CGFloat(arc4random())

self.addChild(bone)

尝试旋转

override func update(currentTime: NSTimeInterval)
{
    bone.runAction(rotateBone)
}

【问题讨论】:

    标签: ios swift sprite-kit skspritenode skaction


    【解决方案1】:

    您在每次更新(每一帧)时重新运行该操作:

    override func update(currentTime: NSTimeInterval)
    {
        bone.runAction(rotateBone)
    }
    

    动作会随着时间的推移而运行。运行一次,让它完成它的工作。反复重启只会替换之前的动作,本质上是重置。

    【讨论】:

    • 这不完全正确,因为当我执行 bone.zRotation-=10 时,它也没有旋转。
    • 骨骼是否启用了物理功能?
    • 没有。我发布的代码是影响骨骼节点的所有内容
    • 初始 zRotation 是否旋转精灵?我对 swift 不熟悉,也许 bone 是 nil,而 bone.runAction 只是被忽略了,但如果我没记错的话,尝试运行 nil 对象的函数在 Swift 中是一个错误(与 Objc 不同)。
    • 注意:旋转的单位是弧度,而不是度数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多