我試圖製作一個簡單的2D平臺遊戲。我決定使用SpriteKit引擎提供的引擎,而不是導入精靈:在GameScene.sks中,我拖放了一個名爲「wall」的精靈(簡單的紅色正方形)。我複製並粘貼它有2個牆壁,玩家可以跳上。在代碼部分我寫了下面幾行:具有相同名稱的GameScene.sks中的多個節點
var wall = SKSpriteNode()
,然後,在「didMoveToView」功能:
wall = self.childNodeWithName("wall") as! SKSpriteNode
wall.physicsBody = SKPhysicsBody(rectangleOfSize: wall.size)
wall.physicsBody?.affectedByGravity = false
wall.physicsBody?.dynamic = true
wall.physicsBody?.allowsRotation = false
wall.physicsBody?.pinned = true
wall.physicsBody?.categoryBitMask = physicsCategories.wall
wall.physicsBody?.contactTestBitMask = physicsCategories.player
,因爲我已經創建的類之外的結構(「physicsCategories」)持有各種類別位掩碼,當我檢查了接觸它工作得很好:
//CONTACT
func didBeginContact(contact: SKPhysicsContact) {
let contactMask = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask
switch contactMask {
case physicsCategories.player | physicsCategories.wall:
isGrounded = true
default:
print("Some other contact")
}
}
我的問題是,這僅適用於2個精靈名爲「牆」之一。有沒有辦法在代碼中引用具有相同名稱的場景中的所有精靈?就像一個標籤或類似「self.childrenNodesWithName(...)」,我知道這並不是不幸存在的。 或者我做錯了什麼? 預先感謝您。
創建一類像「類牆:SKSpriteNode」,然後在裏面GameScene壁對象引用它。 sks –
感謝您的提示。但我不確定如何從GameScene.sks中的對象引用一個類,你能幫助我嗎? – Jules