【发布时间】:2014-05-03 00:17:26
【问题描述】:
我正在使用 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 中是否有一些我可以更改或必须实施的内容?
【问题讨论】:
标签: sprite-kit osx-mavericks skspritenode skphysicsbody