【发布时间】:2017-06-06 14:25:36
【问题描述】:
我很难弄清楚为什么我的精灵在 Swift 3 和 Xcode 8 中没有缩放。我有 3 个相同的精灵,ball1、ball2 和 ball3,它们都在我的 GameScene.sks 的中心,并且完全可见游戏运行。这是相关代码;
var ball1 = SKSpriteNode()
var ball2 = SKSpriteNode()
var ball3 = SKSpriteNode()
var signature = Double()
var scaleFactor = Double()
var score = Double()
let signatureOptions = [1, -1]
ball1 = self.childNode(withName: "ball1") as! SKSpriteNode
ball2 = self.childNode(withName: "ball2") as! SKSpriteNode
ball3 = self.childNode(withName: "ball3") as! SKSpriteNode
func myFunction() {
ball1.position = CGPoint(x: 0, y: 0)
ball2.position = CGPoint(x: 0, y: 0)
ball3.position = CGPoint(x: 0, y: 0)
signature = Double(arc4random_uniform(UInt32(Double(signatureOptions.count))))
scaleFactor = 35 / (0.5 + (score / 20))
let scaleBall2 = SKAction.scale(by: CGFloat(((100 + scaleFactor) * signature) / 100), duration: 1)
let scaleBall3 = SKAction.scale(by: CGFloat((((100 + scaleFactor) * signature) / 100) * -1), duration: 1)
ball2.run(scaleBall2)
ball3.run(scaleBall3)
}
myFunction()
运行时,所有精灵重新定位都按计划进行,它们都移动到中心。但在那之后绝对没有任何反应。我声明签名变量的行是否有问题,决定它们是增长还是缩小?因为目前他们什么都没做,所以如果有人知道需要发生的事情不是,我会非常感激。提前致谢。
【问题讨论】:
-
可能是您的缩放操作只是返回值 1,因此根本没有缩放?在不知道
score的工作原理的情况下,我很难确切知道scaleFactor将是什么。我能想到的唯一另一件事应该是显而易见的,即您还需要在某个时候调用myFunction()才能执行此块,尽管我确信您已经知道这一点。另外 - 当它与缩放直接相关时,为什么它的标题和标签是旋转? -
所有优点,谢谢。我已经修复了最后的函数调用,标题和标签与其他一些问题混淆了,希望现在都解决了。分数将始终是从 0 开始的整数,因此不可能有 1 的值。不过,感谢您的建议,但这似乎不是我的问题。
标签: swift xcode scaling skspritenode skaction