私はボールを表すSKスプライトノードを使用しています。私が忙しくしていることは、ボールが毎回の時間間隔の後に色を変えたいということです。時間の間隔でランダムな色を生成
override func update(_ currentTime: TimeInterval) {
ball.color = UIcolor.random()
}
私はコードが色を変えるほど十分に機能すると言います。しかし、問題は、私は2秒ごとのように、私は色の変化を計画したよりもはるかに速く、すべてのフレームの魔法の色を変更することです。この問題への
私の回避策はので、このコードは、値の時間をフレームごとに更新されながら、色ごとに時間== 300を変更するように設計されて
var relative = 300
var Time = 0 {
didSet {
if Time == relative {
ball.color = UIColor.random()
}
}
}
override func update(_ currentTime: TimeInterval) {
PT.run(SKAction.moveTo(x: ball.position.x, duration: 0.5))
Time += 1
if Time == relative {
Time = 0
}
}
の下に表示されます。 300に達すると時間値はリセットされます。
このようにして、すべてのフレームではなく数秒後に色を変更できます。
このデザインは、実行する機能をコーディングして設定するための安価で実績のない方法に見えるかもしれません。だからこそ私は、経験豊富なプログラマーに、このロジックを設計するためのよりよい方法を手助けするように頼んでいるのです。私は機能や操作方法が非常に新しいので、「オーバーライド機能アップデート」などの「組み込み関数」に間に合わずに、実行可能な、または自己完結型の関数をコーディングする方法を教えてください。
これは機能しませんでした。私は、タイマが何らかの値を割り当てられていないためだと考えています。 – user3211359
@ user3211359 'var timer:CFTimeInterval = 0.0'は代入式で、' timer + = delta'はデルタを代入します。デルタ時間がない場合、currentTimeを適切に渡すことはありません。 – BennX
私はタイマーを割り当てました。問題は、タイマーはどういうわけかこのように見える 0.0166666669974802 - ルーティ 26790.488545286 - デルタ – user3211359