【发布时间】:2016-05-17 19:44:09
【问题描述】:
我正在尝试制作一个简单的 2D 平台游戏。我决定使用 SpriteKit 引擎提供的精灵,而不是导入精灵:在 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(...)”之类的东西,我知道它并不存在。 或者也许我做错了什么? 提前谢谢你。
【问题讨论】:
-
创建一个类似'class Wall: SKSpriteNode'的类,然后在GameScene.sks中的墙对象中引用它
-
感谢您的提示。但我不确定如何从 GameScene.sks 中的对象引用类,您能帮帮我吗?
标签: swift sprite-kit contact skspritenode