swift – 在SKSpriteNode上的3D硬币翻转动画

swift – 在SKSpriteNode上的3D硬币翻转动画,第1张

概述我目前正在使用 Swift 3和SpriteKit开发游戏.我有一个硬币在用户可以收集的游戏中掉落.现在,它下降,没有任何轮换或任何东西.我想在它落下时添加3D旋转效果.此效果应该是围绕y轴的旋转.我不知道如何创建这样的3D效果,或者我是否应该使用其他程序. 我已经在另一个堆栈溢出帖子上找到了我正在寻找的东西,但它在objective-c中: Spinning an image like a co 我目前正在使用 Swift 3和SpriteKit开发游戏.我有一个硬币在用户可以收集的游戏中掉落.现在,它下降,没有任何轮换或任何东西.我想在它落下时添加3D旋转效果.此效果应该是围绕y轴的旋转.我不知道如何创建这样的3D效果,或者我是否应该使用其他程序.

我已经在另一个堆栈溢出帖子上找到了我正在寻找的东西,但它在objective-c中:

Spinning an image like a coin

我已经找到了一种方法(通过链接)与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创建此动画的另一种方法,我们将不胜感激.

解决方法 我最终通过减少和增加硬币的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.sequences变暗,并在组中“转动”硬币,使每个序列同时运行.另请注意,所有持续时间均为0.75.如果您使用此代码,请确保所有持续时间都相同,以免影响效果.

要使硬币看起来像翻转而不是转动,而不是修改xScale,请改为改变yScale.

感谢@Mobile Ben为我指明了正确的方向!

总结

以上是内存溢出为你收集整理的swift – 在SKSpriteNode上的3D硬币翻转动画全部内容,希望文章能够帮你解决swift – 在SKSpriteNode上的3D硬币翻转动画所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1003148.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存