在这段代码中,我的一个精灵应该降低速度,直到达到0.75。但是,一旦代码达到0.75,它就会因某种原因而不断减少。 我有一个定时器,每0.2秒调用一次speed_Control函数,sprite.speed从1.0开始。
func speed_Control() {
if boolDecrease == true {
speed_Decrease()
}
}
func speed_Decrease() {
if sprite.speed != 0.75 {
println(sprite.speed)
sprite.speed -= 0.05
} else {
boolDecrease = false
}
}
我添加了println(sprite.speed)以查看我的精灵是否真的返回0.75,它确实如此,所以如果sprite.speed!= 0.75,我不知道它是如何通过的。
有人能看出这有什么问题吗?
答案 0 :(得分:4)
不应使用(in)相等运算符比较浮点值。无法准确表示值0.05
,因此speed
最终会接近但不完全等于0.75
。这里的一个简单解决方案是将条件sprite.speed != 0.75
更改为sprite.speed > 0.76
。