我目前正在使用Swift 3和SpriteKit开发游戏。我有一个硬币在用户可以收集的游戏中掉落。现在,它下降,没有任何轮换或任何东西。我想在它落下时添加3D旋转效果。此效果应该是围绕y轴的旋转。我不确定如何创建这样的3D效果,或者我是否应该使用其他程序。
我已经在另一个堆栈溢出帖子上找到了我正在寻找的东西,但它在objective-c中:
我已经找到了一种方法(通过链接)与Core Animations / Core Graphics,但我不知道如何使它在SKSpriteNode上工作。
var coinFlip = CATransition()
coinFlip.startProgress = 0
coinFlip.endProgress = 1.0
coinFlip.type = "flip"
coinFlip.subtype = "fromRight"
coinFlip.duration = 0.5
coinFlip.repeatCount = 2
yourView.layer.addAnimation(coinFlip, forKey: "transition")
这最后一行仅适用于UIViews,因此当我尝试在SKSpriteNode上运行它时会导致错误。
如果有人可以向我解释如何执行此操作和/或向我展示为SKSpriteNode创建此动画的另一种方式,我们将不胜感激。
答案 0 :(得分:1)
我最后通过减少和增加硬币的xScale
来创建旋转效果,同时还更改colorBlendFactor
以使硬币在光线不应该击中时变暗它
这是我的代码:
let scaleSequence = SKAction.sequence([SKAction.scaleX(to: 0.1, duration: 0.75), SKAction.scaleX(to: 1, duration: 0.75)])
let darkenSequence = SKAction.sequence([SKAction.colorize(with: SKColor.black, colorBlendFactor: 0.25, duration: 0.75, SKAction.colorize(withColorBlendFactor: 0, duration: 0.75)])
let group = SKAction.group([scaleSequence, darkenSequence])
fallingCoin.run(SKAction.repeatForever(group))
它有点乱,但它有效。简单地说,它使用SKAction.group
,因此操作同时进行,我将SKAction.sequence
的颜色变暗,然后转动"组中的硬币,因此每个序列同时运行。另请注意,所有持续时间均为0.75。如果您使用此代码,请确保所有持续时间都相同,因此效果不会被破坏。
要使硬币看起来像翻转而不是转动,而不是修改xScale
,而是改为yScale
。
感谢@Mobile Ben让我指向了正确的方向!