swiftのspritekitを用いてアクションゲームを作っています。
timer関数を用いて1秒に一回敵をランダムに発生させて画面上から下の方に降ってくるようにしようと思っています。
敵の発生、下への移動は実行されるのですが、画面下に敵が移動してくる途中に数秒に一回ガクガクと上下に残像のように分裂して表示されてしまいます。
個人的には
Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (Timer) in¥
self.createEnemy()
}
の関数で定期的に敵のオブジェクトを生成していることが原因と考えていますが、なぜ残像のようなバグになってしまうのかわかりません。コードに根本的な誤りがあるのでしょうか。また、この方法以外に敵を定期的に発生させる方法はありますでしょうか。詰まってしまっている状態で何かヒントを頂けるとありがたいです。よろしくお願い致します。
swift
1 override func didMove(to view: SKView) { 2 layoutScene() 3 setupScoreLabel() 4 physicsWorld.contactDelegate = self 5 6 _ = Timer.scheduledTimer(withTimeInterval: 1, repeats: true) { (Timer) in 7 self.createEnemy() 8 } 9 }
swift
1 func createEnemy(){ 2 3 4 var hasseiIchi = Int(arc4random_uniform(500)) 5 6 let texture5 = SKTexture(imageNamed: "bands") 7 let sprite5 = SKSpriteNode(texture:texture5) 8 sprite5.physicsBody = SKPhysicsBody(texture:texture5,size:sprite5.size) 9 10 sprite5.position=CGPoint(x:hasseiIchi,y:700) 11 sprite5.name="bands" 12 sprite5.physicsBody?.isDynamic = true 13 sprite5.physicsBody?.contactTestBitMask = PhysicsCategories.switchCategory 14 sprite5.physicsBody?.collisionBitMask = PhysicsCategories.none//0 15 self.addChild(sprite5) 16 17 let moveToDown=SKAction.moveTo(y: 0, duration: TimeInterval(5)) 18 sprite5.run(moveToDown) 19 20 21 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。