2017-01-21 1 views
0

스위프트 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() 

모든 스프라이트의 위치 조정은 계획로 진행하고, 중앙에 그들은 모두 이동. 그러나 그 후 절대적으로 아무 일도 일어나지 않습니다. 시그니처 변수를 선언하고 그 값이 커지거나 줄어드는 지 결정하는 라인에 문제가 있습니까? 왜냐하면 그들은 현재 어느 쪽도하지 않고 있기 때문에, 어떤 일이 일어날 필요가 있는지에 대한 생각이 있다면, 나는 매우 감사 할 것입니다. 미리 감사드립니다.

+0

가 당신의 규모의 행동이 단지 하나의 값을 반환하는 것이 될 수 있을까, 따라서 전혀 스케일링하지 않습니까? '스코어'가 어떻게 작동하는지 알지 못해서'스케일 팩터'가 정확히 무엇인지 알기가 어렵다. 내가 생각할 수있는 또 다른 유일한 사실은 분명해야한다.이 블록을 실행하려면 어떤 시점에서'myFunction() '을 호출해야한다. 물론 이미 알고있을 것이다. - 크기 조정과 직접 관련이있는 경우이 제목을 지정하고 태그를 지정하는 이유는 무엇입니까? – Dan

+0

좋은 점, 감사합니다. 마지막에 함수를 호출하는 것을 수정했습니다. 제목과 태그가 다른 질문과 섞여서 다행히도 이제 모두 해결되었습니다. 점수는 항상 0부터의 정수가 될 것이므로 값 1을 갖는 것은 불가능합니다. 그러나 제안을 해주셔서 감사합니다. 그러나 그것은 내 문제인 것처럼 보이지 않습니다. –

답변

0

좋아, 내가 아는 것 같아!

CGPoint(x: 0, y: 0)은 실제로는 SKView의 맨 왼쪽에있는 지점입니다. 화면 중앙에 노드를 만들려면 CGPoint(x: self.size.width/2, y: self.size.height/2)을 사용하여 노드를 화면 중앙에 배치해야합니다.

이제, 코드를 실행하기 위해, 당신과 같이 (viewDidLoad에 해당)을 didMove 기능의 내부 myFunction를 호출해야합니다

override func didMove(to view: SKView) 
{ 
    myFunction() 
} 
+0

제안 해 주셔서 감사합니다.하지만 아무 것도 변경하지 않은 것으로 보입니다. 아직도 그들 중 누구도 확장 할 수 없습니다. 내 관점의 중심에 대해 말한 것은 흥미 롭지 만 0,0은 내 스프라이트를 중심으로 성공적으로 이동시키는 것으로 보입니다. 최근 Xcode 8에서 변경된 사항인지 아닌지 궁금합니다. –

관련 문제