你好,我想阻止SKSpriteNode離開屏幕或使它在點擊屏幕邊界時彈回。當它觸及邊界時是否也可以調用一個函數?停止SKSpriteNode離開視圖(Swift)
如果發現這個問題Click
在那裏他使用此代碼:
let borderBody = SKPhysicsBody(edgeLoopFromRect: self.frame)
self.physicsBody = borderBody
borderBody.friction = 0.0
borderBody.restitution = 1.0
但由於某些原因,它只能從移出頂部和bottem的擋住了我的節點(這是動態的),但它能夠移出一邊。
(記住,即時通訊新SpriteKit和斯威夫特保持)
編輯:我發現這個代碼:
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
}
}
我讀它是像設置類別?這段代碼是否合適?
你不得不考慮碰撞檢測的大小。請參閱Apple的文檔:https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Physics/Physics.html – chrs 2014-10-09 17:04:38
您的場景比您的視圖大。嘗試將.AspectFill中的scaleMode更改爲GameViewController.swift中的.ResizeFill。 – 0x141E 2014-10-09 17:25:29
@ 0x141E,我試過你的建議,它使屏幕左側反彈回來,但在右側它不起作用..? – Egghead 2014-10-09 20:56:37