ios - 游戏持续时间越长,我怎样才能让我的炸弹落得更快或产生得更快?

标签 ios swift sprite-kit nstimer skaction

游戏持续时间越长,如何让我的炸弹落得更快或生成得更快?你活得越久,我的游戏就越难。我希望它每 10 个炸弹变得更难。我已经研究了好几天,并尝试了类似问题的多种答案。我相信我制造炸弹的方式使我更难做到这一点。提前致谢!

var bombSpawnSpeed : NSTimeInterval = 0.40
var bombCounter : Int = 0

这是我的更新功能。我的理解是这只是整个场景的定期更新功能。

  override func update(currentTime: CFTimeInterval) {
    /* Called before each frame is rendered */

  if bombCounter >= 10 {
        if bombSpawnSpeed > 0.15 {
            bombSpawnSpeed -= 0.05
            bombCounter = 0

        }
        else {
            bombSpawnSpeed = 0.1

        }

    }

这是炸弹

func enemies() {

    let bomb1 = SKSpriteNode(imageNamed: "AtomicBomb")
    let bomb2 = SKSpriteNode(imageNamed: "EMP")
    let bomb3 = SKSpriteNode(imageNamed: "BioBomb")
    let bomb4 = SKSpriteNode(imageNamed: "ChemBomb")

    let enemy = [bomb1, bomb2, bomb3, bomb4]


    // Enemy Physics
    for bomb in enemy {
        bomb1.size = CGSize(width: 55, height: 55)
        bomb2.size = CGSize(width: 55, height: 70)
        bomb3.size = CGSize(width: 30, height: 30)
        bomb4.size = CGSize(width: 45, height: 70)


        bomb.physicsBody = SKPhysicsBody(circleOfRadius: bomb.size.width / 4)
        bomb.physicsBody?.categoryBitMask = PhysicsCategory.enemy
        bomb.physicsBody?.collisionBitMask = PhysicsCategory.missile | PhysicsCategory.airDefense
        bomb.physicsBody?.contactTestBitMask = PhysicsCategory.missile | PhysicsCategory.airDefense
        bomb.physicsBody?.affectedByGravity = false 
        bomb.runAction(SKAction.speedBy(10, duration: 30))
        bomb.physicsBody?.dynamic = true
        bomb1.name = "enemy1"
        bomb2.name = "enemy2"
        bomb3.name = "enemy3"
        bomb4.name = "enemy4"

        print("bomb")

    }

    let deployAtRandomPosition = arc4random() % 4

    switch deployAtRandomPosition {
    case 0:
        bomb1.position.y = frame.size.height

        let PositionX = arc4random_uniform(UInt32(frame.size.width))

        bomb1.position.x = CGFloat(PositionX)

        self.addChild(bomb1)

        break

    case 1:
        bomb2.position.y = frame.size.height

        let PositionX = arc4random_uniform(UInt32(frame.size.width))

        bomb2.position.x = CGFloat(PositionX)

        self.addChild(bomb2)

        break

    case 2:
        bomb3.position.y = frame.size.height

        let PositionX = arc4random_uniform(UInt32(frame.size.width))

        bomb3.position.x = CGFloat(PositionX)

        self.addChild(bomb3)

        break

    case 3:
        bomb4.position.y = frame.size.height

        let PositionX = arc4random_uniform(UInt32(frame.size.width))

        bomb4.position.x = CGFloat(PositionX)

        self.addChild(bomb4)

        break

    default:

        break

    }

   bomb1.runAction(SKAction.moveTo(airDefense.position, duration: 5))
   bomb2.runAction(SKAction.moveTo(airDefense.position, duration: 5))
   bomb3.runAction(SKAction.moveTo(airDefense.position, duration: 5))
   bomb4.runAction(SKAction.moveTo(airDefense.position, duration: 5))

}

这就是我所说的 touches Begin to create the bombs

enemyTimer = NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: Selector("enemies"), userInfo: nil, repeats: true)

最佳答案

我认为更好的方法是

  1. 添加一个名为lastTimeAddedBomb

    的新变量
  2. 通过跟踪您释放了多少炸弹来决定您的间隔

  3. 检查是否需要在update 方法中添加新炸弹

像这样:

var lastTimeAddedBomb:NSDate
var numberOfBombsDropped:Int = 0
var difficultyLevel:Float = 1

override func update(currentTime: CFTimeInterval) {

    if (numberOfBombsDropped % 10 == 0) {
        difficultyLevel-= 0.1;
    }

    let intervalForBombs = difficultyLevel

    let timeFromLastBomb = NSDate().timeIntervalSinceDate(lastTimeAddedBomb)
    if (timeFromLastBomb >= intervalForBombs) {
        //call bomb
        //save last bomb date as now
        numberOfBombsDropped++
        lastTimeAddedBomb = NSDate()
    } 
}

关于ios - 游戏持续时间越长,我怎样才能让我的炸弹落得更快或产生得更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35263732/

相关文章:

ios - 数组的 Club 值

ios - 使用 MusicSequenceFileCreate() 将 MusicSequence 保存到 .mid 文件

ios - 如何更改导航栏字体

界面生成器中的 iOS 阴影 View

ios - 使用类中结构的函数

ios - 使用 Objective-C 放大和缩小相机 View ?

ios - 具有 3 个自定义 View 和动态高度的 UITableView

ios - 碰撞时 Sprite 不移动

ios - Swift Sprite-kit 移动对象

ios - SKScene.anchorPoint 如何影响 physicsBody?