Sprite Kit:防止SKSpriteNode滑动

时间:2014-05-03 00:17:27

标签: sprite-kit osx-mavericks skspritenode skphysicsbody

我正在使用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;

这是我在场景文件中设置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中有什么东西可以改变,或者我必须实现这个吗?

1 个答案:

答案 0 :(得分:3)

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

停止任何惯性