【发布时间】:2015-12-07 17:06:37
【问题描述】:
我有两个独立的节点,它们有自己的物理实体,当它们发生碰撞时,应该会出现一个带有高分和重播按钮的 SKScene。这就是我的场景的名称:
func didBeginContact(contact: SKPhysicsContact) {
gameOver()
print("gameOver")
}
这就是我为节点设置物理体的方式:
func createDown(position: CGPoint) -> SKNode {
let circleNode = SKSpriteNode()
let circle = SKSpriteNode(imageNamed: "first@2x")
circleNode.position = CGPointMake(position.x, position.y)
circleNode.physicsBody = SKPhysicsBody(circleOfRadius: 30)
circleNode.physicsBody?.dynamic = false
circle.size = CGSize(width: 75, height: 75)
circleNode.addChild(circle)
circleNode.name = "circleNode"
circle.name = "CIRCLE"
let up = SKAction.moveByX(0, y: -9000, duration: 100)
physicsBody?.categoryBitMask = blackCategory
circleNode.runAction(up)
return circleNode
}
func playerPhysics() {
player.physicsBody = SKPhysicsBody(circleOfRadius: 30)
player.physicsBody?.affectedByGravity = false
player.physicsBody?.categoryBitMask = playerCategory
player.physicsBody?.contactTestBitMask = blackCategory
}
这是我的 gameOver 函数:
func gameOver() {
gameEnd = true
let reveal = SKTransition.fadeWithDuration(1)
let scene = GameOver(size: self.scene!.size)
view!.presentScene(scene, transition: reveal)
}
我错过了什么吗?如有必要,将发布更多代码。
【问题讨论】:
-
方法 createDown 是在场景中还是在其他类中定义的?你能展示你是如何定义你的类别的吗?如果场景中定义了createDown方法,那么你忘了给圆节点设置categoryBitMask和contactTestBitMask...
标签: swift sprite-kit skphysicsbody skscene