2015-06-07 18 views
0

如何讓SKSpritenode通過場景的物理體而暢通無阻。 節點的性能SKSpritenode與場景物理體進行交互

monster.physicsBody?.categoryBitMask = PhysicsCategory.Monster 
    monster.physicsBody?.contactTestBitMask = PhysicsCategory.Player 
    monster.physicsBody?.collisionBitMask = 0x0; 
    monster.physicsBody?.dynamic = false 
    monster.physicsBody = SKPhysicsBody(circleOfRadius: 30); 

場面

self.physicsBody = SKPhysicsBody(edgeLoopFromRect: CGRect(origin: CGPoint(x: 0, y: 65), size: CGSize(width: self.frame.size.width, height: self.frame.size.height))) 
    physicsWorld.gravity = CGVectorMake(0,-10); 
    physicsWorld.contactDelegate = self; 

在當怪物節點到達現場的邊界的那一刻,它會停止片刻,然後繼續在其路徑。我如何製作它並不會與場景的邊界進行交互。

回答

0

解決此問題有兩種方法,我建議您自己創建自定義邊界,而不是使用場景的physicsBody。

1)圍繞您的場景創建4個邊界,並相應地調整您的collisionBitMaskContactBitMask

2)(未測試)相應地調整您的self.physicsBodycollisionBitMaskcontactBitMask。這將是不好的做法,並可能在將來導致其他碰撞的問題。

+0

你能解釋一下是什麼。我已經擺脫了現場的物理機構,取而代之的是另一個skspritenode,但無論我如何更改這兩個節點的屬性,他們都不會自由地穿越彼此 – user3593148

+0

對於第一種方法,您可以創建這些'SKSpriteNode'與'physicsBody'的區別。由於您不想使用物理引擎進行碰撞,因此請使用contactBitMask並將其設置爲您希望節點碰撞的類別。這將傳遞給didBeginContact。 – Wraithseeker