如何减少在 Swift spritekit 中创建更多敌人的时间?

Posted

技术标签:

【中文标题】如何减少在 Swift spritekit 中创建更多敌人的时间?【英文标题】:How do i decrease time in which more enemies are created in Swift spritekit? 【发布时间】:2015-10-14 20:30:18 【问题描述】:

我有一个计时器,每秒钟都会产生另一个敌人。我想要它,以便根据用户在产生新敌人之间的时间减少的分数。基本上,分数越高,敌人越多。这是我当前的计时器代码。

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

【问题讨论】:

我曾尝试使用 var speed = 0 等,但我收到一条错误消息,提示无法将“Int”类型的值转换为预期的参数类型“NSTimeInterval”(又名“Double”)。非常感谢 var speed : Double = 0 @jhamer123 阅读此***.com/a/23978854/3402095 它可以帮助您避免将来出现一些问题。如果您想知道自己会遇到哪些问题,请查看以下内容:***.com/q/33052867/3402095 【参考方案1】:

您需要做的就是确保使用 2 位或更多小数位,例如:您希望它的生成速度快于 1 秒,所以......

let newSpeed = 0.75
EnemyTimer = NSTimer.scheduledTimerWithTimeInterval(newSpeed, target: self, selector: Selector("enemies"), userInfo: nil, repeats: true)

这将使它们每 0.75 秒生成一次。只要确保如果你使用整数你做 1.0 而不仅仅是 1 否则是的你会得到错误 Cannot convert value of type 'Int' to expected argument type 'NSTimeInterval' (aka 'Double')

【讨论】:

【参考方案2】:

您可以使用SKScene 的更新功能代替计时器,以可变间隔生成敌人。例如

var previousTime : NSTimeInterval = -1
let score = 100


func spawnEnemy() 
    print("Spawning Enemy")


override func update(currentTime: NSTimeInterval) 

    var spawnTimeInterval : NSTimeInterval = 1 - (NSTimeInterval(score)/1000) 

    let minSpawnTime : NSTimeInterval = 0.1

    if spawnTimeInterval < minSpawnTime 
        spawnTimeInterval = minSpawnTime
    


    if previousTime != -1 

        let elapsedTimeInterval = currentTime - previousTime
        if elapsedTimeInterval > spawnTimeInterval 

            spawnEnemy()
            previousTime = currentTime
        

     else 
        previousTime = currentTime;
    


在上面的代码中,每100个点将比spawnTimeInterval减少0.1秒。您可以根据自己的要求更改此计算。

【讨论】:

以上是关于如何减少在 Swift spritekit 中创建更多敌人的时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SpriteKit 中创建图像节点?斯威夫特 4

在 swift Playground 中创建纹理动画 [关闭]

SpriteKit + Swift - 如何通过缓动移动节点?

如何在 SpriteKit 中创建有限的、可滚动的背景?

iOS 如何在 Sprite Kit 游戏中创建音频淡入/淡出效果?

Swift Combine:如何从发布者列表中创建单个发布者?