如何减少在 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 中创建更多敌人的时间?的主要内容,如果未能解决你的问题,请参考以下文章
在 swift Playground 中创建纹理动画 [关闭]
SpriteKit + Swift - 如何通过缓动移动节点?