你好,我想防止一个SKSpriteNode离开屏幕或者在它触碰到屏幕边界时使其弹回来。当它触碰到屏幕边界时,是否也可以调用一个函数?
我在这里找到了一个相关问题点击
他使用了以下代码:
let borderBody = SKPhysicsBody(edgeLoopFromRect: self.frame)
self.physicsBody = borderBody
borderBody.friction = 0.0
borderBody.restitution = 1.0
但出于某种原因,它只会阻止我动态的节点向上和向下移动,但是它可以从侧面移出。
请记住,我对SpriteKit和Swift都很陌生。
编辑:我找到了这段代码:
extension GameScene: SKPhysicsContactDelegate {
func didBeginContact(contact: SKPhysicsContact!) {
let contactMask = contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask
switch (contactMask) {
case BodyType.pipe.toRaw() | BodyType.bomb.toRaw():
println("Contact with a bomb")
if contact.bodyA.categoryBitMask == BodyType.pipe.toRaw() {
explode(pipe: contact.bodyA.node as SKSpriteNode)
} else {
explode(pipe: contact.bodyB.node as SKSpriteNode)
}
case BodyType.pipe.toRaw() | BodyType.bird.toRaw():
println("Contact with a pipe")
bird.pushDown()
case BodyType.ground.toRaw() | BodyType.bird.toRaw():
println("Contact with ground")
for actor in actors {
actor.stop()
}
let shakeAction = SKAction.shake(0.1, amplitudeX: 20)
screenNode.runAction(shakeAction)
default:
return
}
}
我看到有人说可以设置分类来解决这个问题?这段代码好用吗?