我试图制作一个简单的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