所以,试着把对象变成快速并且遇到这个问题。
let offset = CGPointMake(location.x - bird.position.x, location.y - bird.position.y);
let length = sqrtf((Float)(offset.x * offset.x + offset.y * offset.y))
let direction = CGPointMake(offset.x / length, offset.y / length)
对于第三行,我收到错误 - 无法使用类型为'($ T5,$ t10)'的参数列表调用'/'。我需要输入什么类型以及解决此问题的方法。同样的事情,
func moveSprite(sprite: SKSpriteNode) {
let amountToMove = CGPointMake(velocity.x * dt, velocity.y * dt)
}
这里的错误是 - 无法使用类型为'($ T7,$ t14)'的参数列表调用'*'
现在,dt是一个NSTimeinterval,而velocity是一个CGPoint。当我尝试将施法速度键入双精度时,我只是得到另一个错误。 无法使用类型为'($ T9,$ t18)'
的参数列表调用'init'我需要做些什么来解决这个问题。
答案 0 :(得分:2)
你不能在Swift中混合使用数字类型。你必须强迫length
加入CGFloat。
let direction = CGPointMake(offset.x / CGFloat(length), offset.y / CGFloat(length))
此外,这一行不是Swift:
let length = sqrtf((Float)(offset.x * offset.x + offset.y * offset.y))
那没有意义;这不是你在Swift中强迫的方式。