【问题标题】:Flappy Bird Coding Error in SwiftSwift 中的 Flappy Bird 编码错误
【发布时间】:2014-11-05 08:44:11
【问题描述】:

我的 Flappy Bird 项目在 Xcode 6.1 中遇到了编码错误。

代码是允许小鸟旋转,内容如下:

bird.zRotation = self.acotarMinMax(-1, max: 0.3, valor: bird.physicsBody?.velocity.dy * (bird.physicsBody?.velocity.dy < 0 ? 0.003 : 0.001))

dy下出现错误,内容如下:

value of optional type 'CGFloat?' not unwrapped; did you mean to use '!' or '?'?

如何纠正错误,或者有其他方法可以生成旋转?

我是 Swift 的初学者,所以我很难确定这是语法问题还是与更新版本有关。

我从在线教程中获得了代码,它在视频中有效。

【问题讨论】:

    标签: xcode swift xcode6


    【解决方案1】:

    阅读 Swift Optional 课程:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html

    所以dy 似乎是一个可选值,这意味着它要么有一个值,要么没有,但直到你仔细研究它才知道(比如薛定谔的猫)。所以如果你需要这个值并且你知道它不会是nil,你可以通过写bird.physicsBody?.velocity.dy!来解开它,它会查看“盒子”并取出这个值,但如果里面没有任何东西就会崩溃。如果您写dy?,它将查看框,但如果框为空,则忽略它。

    更多关于可选链接(这就是你所做的)在这里:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/OptionalChaining.html

    【讨论】:

    • 如果对您有帮助,请随时投票或标记为正确答案。 :-)
    【解决方案2】:

    所以我才发现我的错误。

    正如 Sebastian 正确指出的那样,它与可选链接有关。

    有效的代码是:

    bird.zRotation = self.acotarMinMax(-1, max: 1, valor: bird.physicsBody!.velocity.dy * (bird.physicsBody!.velocity.dy < 0 ? 0.002 : 0.002))
    

    我用了“!”在physicsBody 上强制一个值。为什么它起作用的确切机制对我来说仍然是一个模糊的东西。但我的猜测是和新版本的修正方法有关。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      相关资源
      最近更新 更多