В моей игре вы нажимаете в любом месте экрана, и пуля идет в этом направлении. Единственная проблема заключается в том, что вы можете стрелять так же быстро, как вы можете нажать. Есть ли способ добавить задержку после каждого выстрела. Поэтому я хотел бы стрелять, подождать 1 секунду, а затем стрелять. Вот мой код в контактах:Swift 3 Bullet Firing Delay
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
guard let touch = touches.first else {
return
}
let touchLocation = touch.location(in: self)
//Set up initial location of bullet and properties
let bullet = SKSpriteNode(imageNamed: "bullet")
bullet.name = "Bullet"
bullet.position = player.position
bullet.setScale(0.75)
bullet.zPosition = 1
bullet.physicsBody = SKPhysicsBody(circleOfRadius: bullet.size.width/2)
bullet.physicsBody?.isDynamic = true
bullet.physicsBody?.categoryBitMask = PhysicsCategory.Projectile
bullet.physicsBody?.contactTestBitMask = PhysicsCategory.Monster
bullet.physicsBody?.collisionBitMask = PhysicsCategory.None
bullet.physicsBody?.usesPreciseCollisionDetection = true
//Determine offset of location to bullet
let offset = touchLocation - bullet.position
//Stops Bullet from shooting backwards
if (offset.y < 0) { return }
addChild(bullet)
//Get the direction of where to shoot
let direction = offset.normalized()
//Make it shoot far enough to be guaranteed off screen
let shootAmount = direction * 1000
//Add the shoot amount to the current position
let realDest = shootAmount + bullet.position
//Create the actions
if currentGameState == gameState.inGame {
let actionMove = SKAction.move(to: realDest, duration: 1.0)
let actionMoveDone = SKAction.removeFromParent()
bullet.run(SKAction.sequence([actionMove, actionMoveDone]))
}
}
Спасибо за любую помощь.
Запустите таймер при выстреле пули. При следующем касании проверьте, прошел ли таймер второй. Если он есть, запустите и перезапустите таймер, иначе проигнорируйте. – SaylorTwift2
Это просто, и это можно сделать несколькими способами. Один из способов - запустить действие с помощью ключа. Таким образом, вы запускаете пулю, затем выполняете действие на игроке, который длится секунду, и означает, что ваш стрельба заблокирована. Поэтому каждый раз, когда вы пытаетесь запустить пулю, вы проверяете, присутствует ли этот ключ действия на определенном узле. – Whirlwind
Любой шанс, что у меня может быть код для любого метода? Извините, новичок здесь –