我无法弄清楚为什么我的 Sprite 在 Swift 3 和 Xcode 8 中无法缩放。我有 3 个相同的 Sprite ,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()
运行时,所有 Sprite 重新定位都按计划进行,并且它们都移动到中心。但在那之后绝对没有任何反应。我声明签名变量的行是否有问题,决定它们是增长还是收缩?因为目前他们两者都没有做,所以如果有人知道需要发生什么而不是发生什么,我将非常感激。提前致谢。
最佳答案
好吧,我想我知道问题所在了!
其中一个,CGPoint(x: 0, y: 0)
实际上是 SKView
左上角的点。要在屏幕中央创建节点,您需要执行 CGPoint(x: self.size.width/2, y: self.size.height/2)
将节点放置在屏幕中央。
现在,要执行代码,您需要调用 myFunction
didMove
里面函数(相当于 viewDidLoad
),如下所示:
override func didMove(to view: SKView)
{
myFunction()
}
关于Swift-Scale SKAction 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41783280/