1
我正在使用SpriteKit開發OS X太空船遊戲。這就是我如何爲我的飛船節點設置physicsBody
。Sprite 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;
這是我如何設置physicsWorld
和physicsBody
在我的場景文件。
// 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
,我可以改變或將我必須執行此?
停止任何慣性我想補充說,在我的加速方法的第一線,但它確實搞砸了的方式船移動。這不是一個好地方。 – 425nesp
@ 425nesp - 不確定你的意思。將速度設置爲0,0將停止所有x和y軸的移動。 – sangony
在調用'[ship accele:@「up」]''之前,我在'update'函數中做了'ship.physicsBody.velocity = CGVectorMake(0,0)'。我也把'engineThrust'的方式調高了,否則,船隻幾乎不動。 – 425nesp