在GameScenes.swift(swift)中制作对象大小的动画



我们需要在GameScene.swift中设置对象大小的动画。其他Stack Overflow帖子建议使用UIView.animateWithDuration,但这在GameScene.swift内不可用。我们需要在游戏场景.swift内部设置动画,因为我们还需要访问SKAction才能永远运行一个动作。

现在,我们正在使用下面的代码,但它太笨重了。希望动画能在物体收缩时平滑物体的外观。

    runAction(SKAction.repeatActionForever(
        SKAction.sequence([
            SKAction.runBlock(shrinkItem),
            SKAction.waitForDuration(0.5)
            ])
        ))
func shrinkItem() {
    let curWidth = item.size.width
    if curWidth < 15 {
        return
    }
    item.size = CGSize( width: CGFloat(item.size.width - 20 ), height: CGFloat(bird.size.height - 20) )
}

你想做的是缩小你的鸟,对吧?这相当于缩小规模。

为什么要在runBlock中手动执行此操作?

您可能需要查看SKAction类参考:http://goo.gl/ycPYcF.在里面你会看到所有可能的动作,而scaleBy:duration:(或另一个)可能就是你想要的。

let shrinkAction   = SKAction.scaleBy(0.5, duration: 1.0)
let waitAction     = SKAction.waitForDuration(0.5)
let sequenceAction = SKAction.sequence([shrinkAction, waitAction])
let repeatAction   = SKAction.repeatActionForever(sequenceAction)
self.yourBirdNode.runAction(repeatAction)

根据您接下来要做的操作,请注意有些操作是自动可逆的(通过reversedAction),有些则不是

最新更新