2017-01-21 4 views
0

スウィフト3とXcode 8でスプライトがスケーリングされていない理由を調べるのに苦労しています.3つの同じスプライトball1、ball2、ball3がGameSceneの中心にあります.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

が、それはあなたのスケールのアクションはちょうど1の値を返すされている可能性があり、したがって、スケーリングは全くありませんか?私の目的のために 'scoreFactor'がどのようになるかを知ることなく、' score'がどのように動作するかを知らずに、私が考えることができる唯一のもう一つのことは明らかです。このブロックを実行するには、ある時点で '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などでこれが最近変更されたのだろうかと思います。 –