スウィフト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()
実行すると、すべてのスプライトの再配置が計画され、すべてが中央に移動します。しかしその後、絶対に何も起こりません。シグネチャ変数を宣言して、変数が増加するか縮小するかを決定する行に問題がありますか?現時点では彼らはどちらもしていないので、誰かが何が起こっている必要があるかについて考えがあれば、私は非常に感謝しています。前もって感謝します。
が、それはあなたのスケールのアクションはちょうど1の値を返すされている可能性があり、したがって、スケーリングは全くありませんか?私の目的のために 'scoreFactor'がどのようになるかを知ることなく、' score'がどのように動作するかを知らずに、私が考えることができる唯一のもう一つのことは明らかです。このブロックを実行するには、ある時点で 'myFunction()'を呼び出す必要があります。 また、スケーリングに直接関係している場合、なぜこれにタイトルが付けられてタグ付けされるのですか? – Dan
良い点、ありがとうございます。私は最後に関数呼出しを修正しました。タイトルとタグはいくつかの質問と混在していました。うまくいきなりすべて解決されました。スコアは常に0からの整数になりますので、値は1にすることはできません。提案していただきありがとうございますが、それは私の問題ではないようです。 –