2014-10-07 39 views
3

我知道如何設置物理屬性,但我不知道需要什麼代碼才能使它們彼此反彈,就像遊戲桌上的球一樣。我有我的didBeginContact方法準備好,如何讓SKSpritekit節點相互反彈

-(void)didBeginContact:(SKPhysicsContact*)contact 
{ 
uint32_t collision = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask); 
if (collision == (gearCategory | gear1Category)) { 
    [ 
} 
} 

,但我不知道我需要什麼在它的代碼,任何人都具有良好的數學和引導技巧可以幫助我嗎?

+0

的didBeginContact方法僅是一個代表,即大約兩個機構進入彼此接觸通知。 – ZeMoon 2014-10-08 07:54:11

回答

4

這是一個非常簡單的任務sprite套件。

//Add to top of scene 
static const uint32_t spriteCategory = 0x1 << 0; 

//declare when creating sprite 
sprite.physicsBody.categoryBitMask = spriteCategory; 
sprite.physicsBody.collisionBitMask = spriteCategory; 

這樣做是設置一個精靈與給定spriteCategory作爲其categoryBitMask的所有精靈碰撞。您可以使用以下代碼將您的精靈設置爲與多個不同的categoryBitMasks相沖突。

sprite.physicsBody.collisionBitMask = spriteCategory|otherCategory|anotherCategory; 

開始接觸是否用來在節點接觸時執行一些代碼。您將使用contactTestBitMask屬性來檢測項目何時觸摸。 collisionBitMask自動爲您處理衝突!

我附上了一個鏈接,其中有一整段專門討論碰撞和聯繫。

http://www.raywenderlich.com/42699/spritekit-tutorial-for-beginners

+0

有沒有辦法讓它不會超過一定的速度。目前,他們只是不斷加快速度,最終飛出屏幕。 – user3593148 2014-10-08 00:42:09

+1

sprite.physicsBody.restitution = 0;玩這個號碼,這是「bounciness」屬性。 – meisenman 2014-10-08 02:27:04

+0

如果您的問題被回答,請將此標記爲已回答:) – meisenman 2014-10-09 13:49:52