SKSpriteNode 上的 3D 硬币翻转动画
3D Coin Flipping Animation on SKSpriteNode
我目前正在使用 Swift 3 和 SpriteKit 开发游戏。我有一枚硬币在用户可以收集的游戏中掉落。现在,它落下并且没有任何旋转或任何东西。我想在它掉落时添加 3D 旋转效果。这个效果应该是绕y轴旋转。我不确定如何创建这样的 3D 效果,或者我是否应该使用其他程序。
我在另一个堆栈溢出 post 中找到了我要找的东西,但它在 objective-c:
Spinning an image like a coin
我找到了一种方法(来自 link),使用 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")
这最后一行仅适用于 UIView,因此当我尝试在 SKSpriteNode 上 运行 它时会导致错误。
如果有人可以向我解释如何做到这一点 and/or 告诉我另一种为 SKSpriteNode 创建此动画的方法,将不胜感激。
我最终通过减少和增加硬币的 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
变暗的颜色和 "turning" 硬币放在组中所以每个序列 运行s 同时。另请注意,所有持续时间均为 0.75。如果您使用此代码,请确保所有持续时间都相同,以免破坏效果。
要使硬币看起来像翻转而不是转动,不要修改 xScale
,而是更改 yScale
。
感谢@Mobile Ben 为我指明了正确的方向!
我目前正在使用 Swift 3 和 SpriteKit 开发游戏。我有一枚硬币在用户可以收集的游戏中掉落。现在,它落下并且没有任何旋转或任何东西。我想在它掉落时添加 3D 旋转效果。这个效果应该是绕y轴旋转。我不确定如何创建这样的 3D 效果,或者我是否应该使用其他程序。
我在另一个堆栈溢出 post 中找到了我要找的东西,但它在 objective-c:
Spinning an image like a coin
我找到了一种方法(来自 link),使用 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")
这最后一行仅适用于 UIView,因此当我尝试在 SKSpriteNode 上 运行 它时会导致错误。
如果有人可以向我解释如何做到这一点 and/or 告诉我另一种为 SKSpriteNode 创建此动画的方法,将不胜感激。
我最终通过减少和增加硬币的 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
变暗的颜色和 "turning" 硬币放在组中所以每个序列 运行s 同时。另请注意,所有持续时间均为 0.75。如果您使用此代码,请确保所有持续时间都相同,以免破坏效果。
要使硬币看起来像翻转而不是转动,不要修改 xScale
,而是更改 yScale
。
感谢@Mobile Ben 为我指明了正确的方向!