2014-10-28 73 views
0

所以我正在構建一個Sprite Kit遊戲,並且在某個點上我想在某些節點上啓用/禁用引力。Sprite工具包和類型推斷

我設法做到了,但我只是想知道是否有更好的方法來實現這一點。

這裏是我的代碼:

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

我想這是不是一個真正的精靈套件有關的問題,但更多的雨燕本身。有沒有可能以更簡單的方式做到這一點?

謝謝。

+0

有一個affectedByGravity屬性,它很可能是在這種情況下對你更好。動態屬性控制物理是否影響對象。此外,至少有一個節點必須是動態的才能發生聯繫或碰撞事件。因此,來回更改動態屬性很可能會導致您監視比您必須更多的事情。 – meisenman 2014-10-28 20:25:21

+0

我真的希望氣泡不受任何東西的影響,所以'動態'是相關的,但謝謝我忘記了這個屬性。 – Skoua 2014-10-29 17:07:19

回答

1

由於container!.children[AnyObject],因此您必須先投射其內容,然後才能對其做任何有用的操作。我能想到的最徹底的方法是把它轉換爲[SKNode]就在你for聲明:

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