In meinem Spiel tippen Sie irgendwo auf dem Bildschirm und eine Kugel geht in diese Richtung. Das einzige Problem ist, dass Sie so schnell schießen können, wie Sie tippen können. Gibt es eine Möglichkeit, nach jedem Schuss eine Verzögerung hinzuzufügen? Also würde ich gerne schießen, 1 Sekunde warten und dann schießen. Hier ist mein Code in BerührungenEnge: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]))
}
}
Danke für jede Hilfe.
Starten Sie einen Timer, wenn eine Kugel geschossen wird. Bei der nächsten Berührung prüfen Sie, ob der Timer eine Sekunde verstrichen ist. Wenn dies der Fall ist, schieße und starte den Timer neu oder ignoriere ihn. – SaylorTwift2
Es ist einfach und kann auf verschiedene Arten erfolgen. Eine Möglichkeit wäre, eine Aktion mit einem Schlüssel auszuführen. Also feuern Sie eine Kugel und führen Sie dann eine Aktion für einen Spieler aus, die eine Sekunde dauert und bedeutet, dass Ihr Schuss gesperrt ist. Jedes Mal, wenn Sie versuchen, eine Kugel abzufeuern, überprüfen Sie, ob dieser Aktionsschlüssel auf einem bestimmten Knoten vorhanden ist. – Whirlwind
Jede Chance, ich kann Code für beide Methoden haben? Sorry, ein Anfänger hier –