2014-05-03 97 views
1

我正在使用SpriteKit開發OS X太空船遊戲。這就是我如何爲我的飛船節點設置physicsBodySprite Kit:防止SKSpriteNode滑過

// SKSpriteNode 
ship.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:triangle]; 

ship.physicsBody.categoryBitMask = playerCategory; 
ship.physicsBody.contactTestBitMask = enemyCategory | edgeCategory; 
ship.physicsBody.collisionBitMask = enemyCategory | edgeCategory; 

ship.physicsBody.allowsRotation = NO; 
ship.physicsBody.dynamic = YES; 
ship.physicsBody.linearDamping = 0; 
ship.physicsBody.angularDamping = 0.1; 
ship.physicsBody.mass = 0.1; 
ship.physicsBody.restitution = 0; 

這是我如何設置physicsWorldphysicsBody在我的場景文件。

// SKScene 
self.physicsWorld.contactDelegate = self; 
self.physicsWorld.gravity = CGVectorMake(0, 0); 

self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame]; 
self.physicsBody.categoryBitMask = edgeCategory; 
self.physicsBody.contactTestBitMask = missileCategory | enemyCategory | playerCategory; 
self.physicsBody.collisionBitMask = playerCategory; 

self.physicsBody.restitution = 0; 

在我的場景的update方法,我稱之爲[ship accelerate:@"up"];,這最終調用此。

[self.physicsBody applyForce:CGVectorMake(self.engineThrust * cosf(self.shipOrientation), 
              self.engineThrust * sinf(self.shipOrientation))]; 

有沒有辦法可以禁用船的慣性?我不希望我的船在我的場景中滑行。我希望船隻在我釋放鑰匙後立即停止移動。我還希望船舶在向上箭頭和向下箭頭之間切換時立即改變方向。

有沒有什麼physicsBody,我可以改變或將我必須執行此?

回答

3

您可以通過使用ship.physicsBody.velocity = CGVectorMake(0,0);

+0

停止任何慣性我想補充說,在我的加速方法的第一線,但它確實搞砸了的方式船移動。這不是一個好地方。 – 425nesp

+0

@ 425nesp - 不確定你的意思。將速度設置爲0,0將停止所有x和y軸的移動。 – sangony

+0

在調用'[ship accele:@「up」]''之前,我在'update'函數中做了'ship.physicsBody.velocity = CGVectorMake(0,0)'。我也把'engineThrust'的方式調高了,否則,船隻幾乎不動。 – 425nesp