在射击游戏中自动射击 (Swift 4 - SpriteKit)

Shooting automatically in a Shooter Game (Swift 4 - SpriteKit)

我正在与 Xcode 合作开发一个游戏项目。 我写了让船发射炮弹的代码,但是我不知道用什么函数让船自动发射。

你能帮帮我吗?提前致谢!

这是我的代码,来自 GameScene :

    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {

    let projectile = SKSpriteNode(imageNamed: "projectile")
    projectile.zPosition = 1
    projectile.position = CGPoint(x: player.position.x, y: player.position.y)

    projectile.physicsBody = SKPhysicsBody(circleOfRadius: projectile.size.width/2)
    projectile.physicsBody?.isDynamic = true
    projectile.physicsBody?.categoryBitMask = PhysicsCategory.Projectile
    projectile.physicsBody?.contactTestBitMask = PhysicsCategory.Monster
    projectile.physicsBody?.collisionBitMask = PhysicsCategory.None
    projectile.physicsBody?.usesPreciseCollisionDetection = true
    self.addChild(projectile)
    let action = SKAction.moveTo(x: self.frame.width + projectile.size.width, duration: 0.5)

    projectile.run(action, completion: {
        projectile.removeAllActions()
        projectile.removeFromParent()
    })

}

根据 Jake 的评论,我假设您希望飞船开火 "automatically" 按住手指不重复。

您可以使用更新功能来控制自动拍摄。在我的示例中,更新命令每 1 秒触发一次

private var updateTime: Double = 0

override func update(_ currentTime: TimeInterval) {

    if updateTime == 0 {
        updateTime = currentTime
    }

    if currentTime - updateTime > 1 {
        self.shoot()
        updateTime = currentTime
    }
}

func shoot() {

    let projectile = SKSpriteNode(imageNamed: "projectile")
    projectile.zPosition = 1
    projectile.position = CGPoint(x: player.position.x, y: player.position.y)

    projectile.physicsBody = SKPhysicsBody(circleOfRadius: projectile.size.width/2)
    projectile.physicsBody?.isDynamic = true
    projectile.physicsBody?.categoryBitMask = PhysicsCategory.Projectile
    projectile.physicsBody?.contactTestBitMask = PhysicsCategory.Monster
    projectile.physicsBody?.collisionBitMask = PhysicsCategory.None
    projectile.physicsBody?.usesPreciseCollisionDetection = true
    self.addChild(projectile)
    let action = SKAction.moveTo(x: self.frame.width + projectile.size.width, duration: 0.5)

    projectile.run(action, completion: {
        projectile.removeAllActions()
        projectile.removeFromParent()
    })
}