【问题标题】:Sprite Kit and type inferenceSprite Kit 和类型推断
【发布时间】:2014-10-29 00:27:25
【问题描述】:

所以我正在构建一个 Sprite Kit 游戏,并且在某个时候我想在我的一些节点上启用/禁用重力。

我设法做到了,但我只是想知道是否有更好的方法来实现这一点。

这是我的代码:

func enableGravity() {
    for rawBubble in container!.children {
        let bubble = rawBubble as SKShapeNode
        bubble.physicsBody?.dynamic = true
    }
}

当不对 rawBubble 使用类型推断时,我收到此错误:SKPhysicsBody? does not have a member named dynamic

我想这不是真正的 Sprite Kit 相关问题,而是更多 Swift 本身。是否有可能以更简单的方式做到这一点?

谢谢。

【问题讨论】:

  • 有一个affectedByGravity 属性在这种情况下可能对你更好。动态属性控制物理是否影响您的对象。此外,至少一个节点必须是动态的,才能发生接触或碰撞事件。因此,来回更改动态属性很可能会导致您监控的内容超出您的需要。
  • 我真的希望气泡不受任何影响,所以dynamic 是相关的,但谢谢我忘记了这个属性。

标签: swift sprite-kit


【解决方案1】:

由于container!.children[AnyObject],因此您必须先转换其内容,然后才能对它们进行任何有用的操作。我能想到的最简洁的方法就是将其转换为 [SKNode] 就在您的 for 声明中:

func enableGravity() {
    for bubble in container!.children as [SKNode] {
        bubble.physicsBody?.dynamic = true
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 1970-01-01
    相关资源
    最近更新 更多