参数标签与任何可用的重载都不匹配[sprite.physicsBody?.vector = CGVector()]

时间:2017-12-11 23:28:09

标签: swift sprite physics

好的。我正在尝试使用我自己的精灵来编写Flappy Bird的演绎,以获得乐趣和学习。我一直在实施物理学,现在我正试图应用冲动并为某些物理机构定义速度。我知道物理学是有效的,因为我的幽灵精灵倒在了地上,但是我有一些问题对幽灵精灵实施速度和冲动(让它跳起来再次下降)。

这是我的代码:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {

    Ghost.physicsBody?.velocity = CGVector(0, 0)
    Ghost.physicsBody?.applyImpulse(CGVector(0, 90))

}

我在使用CGVector的两行中收到错误。我相信swift的早期版本是CGVectorMake。错误如下:

Argument labels '(_, _)' do not match any available overloads

我真的不确定这意味着什么,或者如何解决这个问题。如果有必要,我可以链接更多的代码,但它是相当冗长的。我感谢任何建议或提示。这是使用最新的swift和Xcode迄今为止。 Xcode 9.0和Swift 4.0.3。

2 个答案:

答案 0 :(得分:1)

查看the documentation for CGVector,我看到了表单的构造函数:

init(dx: Double, dy: Double)

这意味着您不需要输入CGVector(0, 0),而是需要CGVector(dx: 0, dy: 0)之类的内容。

为了将来参考,当您看到一个下划线的标签时,它通常意味着“无标签” - 您将查找您在没有前面名称的情况下传递的参数值,并添加API所期望的名称。 / p>

答案 1 :(得分:0)

您的CGVector init缺少参数标签。您可以通过更改为

进行修复
CGVector(dx: 0, dy: 90)

作为参考,请查看有关这些错误的Apple文档:https://developer.apple.com/documentation/coregraphics/cgvector