2016-05-17 148 views
0

我試圖製作一個簡單的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(...)」,我知道這並不是不幸存在的。 或者我做錯了什麼? 預先感謝您。

+0

創建一類像「類牆:SKSpriteNode」,然後在裏面GameScene壁對象引用它。 sks –

+0

感謝您的提示。但我不確定如何從GameScene.sks中的對象引用一個類,你能幫助我嗎? – Jules

回答

0

我已經不是我和我的MAC,這是從網站截圖:

enter image description here

+0

我的GameScene.sks中沒有該功能。可能這是由於我沒有使用最新版本的Xcode(我在6.4)?如果是這樣,這是有點問題,因爲我無法設法更新到OSX El Capitan(我在這裏發佈了一個問題:http://superuser.com/questions/1063825/issue-upgrading-from-osx-yosemite - 對 - el-capitan-10-11-4在imac,但stil我無法解決問題)。在此期間,我編寫了這樣的代碼: – Jules

+0

對不起,我不知道哪一個版本可用 –

+0

噢好吧。你能用這種方式幫助我嗎?現在我創建了一個牆的數組,並用「self.children中的child」來檢查孩子的名字是否是「wall」,然後將它添加到數組中。這種方式似乎工作,但:A)我不知道這是「好代碼」B)我非常有興趣按照你的方式做(這似乎並不適合我)。你認爲我的方法好嗎?再次感謝您提供的幫助 – Jules

相關問題