私は、タイムインターバルを変更しようとすると、「周波数」と呼ばれる時間間隔変数に特定の機能(以下に示す)を実行するようにセットアップされています。得点数に基づいて、小さい数に可変周波数は、それだけで周波数が低く数速いスプライトキットでタイマーの時間間隔を変更する
override func didMove(to view: SKView) {
Timer.scheduledTimer(timeInterval: frequency, target: self, selector: #selector(GameScene.spawnFallingOjects), userInfo: nil, repeats: true)
}
func spawnFallingOjects() {
if (GameState.current == .playing || GameState.current == .blackstone) {
guard usingThirdEye == false else { return }
let scoreLabel = childNode(withName: "scoreLabel") as! Score
let lane = [-100, -50 , 0, 50, 100]
let duration = 3.0
switch scoreLabel.number {
case 0...50:
frequency = 6.0
print("frequency has changed: \(frequency)")
case 51...100:
frequency = 4.5
print("frequency has changed: \(frequency)")
case 101...200000:
frequency = 1.1
print("frequency has changed: \(frequency)")
default:
return
}
let randomX = lane[Int(arc4random_uniform(UInt32(lane.count)))]
let object:Object = Object()
object.createFallingObject()
object.position = CGPoint(x: CGFloat(randomX), y: self.size.height)
object.zPosition = 20000
addChild(object)
let action = SKAction.moveTo(y: -450, duration: duration)
object.run(SKAction.repeatForever(action))
}
}
に変更された場合でも、同時に発射するようで発射する速度を変更していないようです周波数番号が低い番号に変更された場合、タイマーを速く起動させるにはどうすればよいですか?私は関数の最後にタイマを再作成する必要がありますか?
このhttp://stackoverflow.com/questions/23978209/spritekitを読みます-creating-a-timer – Epsilon
Astrum、これはSpriteKitに入る方法ではありません。主に、機能を一時停止する便利な方法がないためです。あなたの例のようなタイマーは、ゲームのループとペアになっていません。 SKActionsまたはupdate:メソッドを使用してください...上のリンクからのSteffenの答えに説明されています。 – Whirlwind