【问题标题】:Swift SpriteKit PhysicsBody forced as optional by XcodeSwift SpriteKit PhysicsBody 被 Xcode 强制为可选
【发布时间】:2014-09-03 07:45:12
【问题描述】:

我在尝试使用 Swift 和 SpriteKit 在 Xcode 6 beta 7 中编写一个小鸟克隆时遇到以下问题。

将physicsBody 属性添加到SKSpriteNode 后,我无法直接更改physicsBody 的属性,例如我无法执行以下操作:

bird = SKSpriteNode(texture: birdTexture1)
bird.position = CGPoint(x: self.frame.size.width / 2.8, y: CGRectGetMidY(self.frame))
bird.runAction(flight)
bird.physicsBody = SKPhysicsBody(circleOfRadius: bird.size.height/2)
bird.physicsBody.dynamic = true
bird.physicsBody.allowsRotation = false

Xcode 构建将失败,在我向 PhysicsBody 添加动态和allowRotation 值的两行错误,我能做到的唯一方法是执行以下操作:

bird.physicsBody?.dynamic = true
bird.physicsBody?.allowsRotation = false

将physicsBody 作为可选的'?' 的问题特点是当试图操纵一些我想添加的鸟类物理特性时,执行某些操作会变得很复杂,比如移动时的旋转。

关于如何避免/修复必须将physicsBody 属性标记为可选的任何建议? ('physicsBody?')

谢谢!


(来源:tinygrab.com


(来源:tinygrab.com

【问题讨论】:

    标签: ios swift sprite-kit skphysicsbody flappy-bird-clone


    【解决方案1】:

    其实这个问题有一个简单的解决方法。 你可以加 !像这样的physicsBody之后

    bird.physicsBody!.dynamic = true
    

    原因: 在 SKNode 代码中,您将看到以下语句:

    var physicsBody: SKPhysicsBody?
    

    physicsBody 是 Nullable 类型。因此 XCode 会检查以防止您打开 nil 值。

    【讨论】:

      【解决方案2】:

      我解决了它为 SKPhysics 主体创建一个对象并在配置它之后将其分配给 Sprite:

      let body = SKPhysicsBody(circleOfRadius: bird.size.height/2)
      body.dynamic = true
      body.allowsRotation = false
      
      bird.physicsBody = body
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多