我正在使用SpriteKit为OS X制作太空飞船游戏。这就是我为我的宇宙飞船节点设置physicsBody
的方法。
// 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
中有什么东西可以改变,或者我必须实现这个吗?
答案 0 :(得分:3)
您可以使用ship.physicsBody.velocity = CGVectorMake(0,0);