스위프트 3 및 Xcode 8에서 스프라이트가 스케일링되지 않는 이유를 알아 내는데 어려움을 겪고 있습니다. 내 GameScene의 중앙에 3 개의 동일한 스프라이트 인 ball1, ball2 및 ball3이 있습니다. .sks 및 게임이 실행될 때 완전히 표시됩니다. 다음은 관련 코드입니다. 실행하면스위프트 스케일 SKAction이 작동하지 않습니다.
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()
모든 스프라이트의 위치 조정은 계획로 진행하고, 중앙에 그들은 모두 이동. 그러나 그 후 절대적으로 아무 일도 일어나지 않습니다. 시그니처 변수를 선언하고 그 값이 커지거나 줄어드는 지 결정하는 라인에 문제가 있습니까? 왜냐하면 그들은 현재 어느 쪽도하지 않고 있기 때문에, 어떤 일이 일어날 필요가 있는지에 대한 생각이 있다면, 나는 매우 감사 할 것입니다. 미리 감사드립니다.
가 당신의 규모의 행동이 단지 하나의 값을 반환하는 것이 될 수 있을까, 따라서 전혀 스케일링하지 않습니까? '스코어'가 어떻게 작동하는지 알지 못해서'스케일 팩터'가 정확히 무엇인지 알기가 어렵다. 내가 생각할 수있는 또 다른 유일한 사실은 분명해야한다.이 블록을 실행하려면 어떤 시점에서'myFunction() '을 호출해야한다. 물론 이미 알고있을 것이다. - 크기 조정과 직접 관련이있는 경우이 제목을 지정하고 태그를 지정하는 이유는 무엇입니까? – Dan
좋은 점, 감사합니다. 마지막에 함수를 호출하는 것을 수정했습니다. 제목과 태그가 다른 질문과 섞여서 다행히도 이제 모두 해결되었습니다. 점수는 항상 0부터의 정수가 될 것이므로 값 1을 갖는 것은 불가능합니다. 그러나 제안을 해주셔서 감사합니다. 그러나 그것은 내 문제인 것처럼 보이지 않습니다. –