有两个物理体:一个是
两个节点都将 physicsBody.dynamic 属性设置为 NO。
问题在于当子弹击中飞机时,我的 SKScene 并未调用 didBeginContact 方法。但是,如果我将 AirplaneNode 或 BulletNode 的 physicsBody.dynamic 属性设置为 YES,则会触发 didBeginContact 事件。
有没有一种方法可以解决这个问题?
PS:我真的不需要我的节点是动态的,因为这会导致一个不必要的行为:飞机受损时会轻微移动,子弹有时会旋转飞行。
AirplaneNode
:- (id)initAirplaneNode {
self = [super initWithImageNamed:@"airplane.png"];
if (self) {
self.name = @"player";
self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:self.frame.size];
self.physicsBody.dynamic = NO;
self.physicsBody.affectedByGravity = NO;
self.physicsBody.categoryBitMask = AIRPLANE_CATEGORY;
self.physicsBody.contactTestBitMask = BULLET_CATEGORY;
}
return self;
}
还有一个BulletNode
:
- (id)initBulletNode {
self = [super initWithImageNamed:@"bullet.png"];
if (self) {
self.name = @"bullet";
self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:self.frame.size];
self.physicsBody.dynamic = NO;
self.physicsBody.usesPreciseCollisionDetection = YES;
self.physicsBody.categoryBitMask = BULLET_CATEGORY;
self.physicsBody.contactTestBitMask = AIRPLANE_CATEGORY;
}
return self;
}
两个节点都将 physicsBody.dynamic 属性设置为 NO。
问题在于当子弹击中飞机时,我的 SKScene 并未调用 didBeginContact 方法。但是,如果我将 AirplaneNode 或 BulletNode 的 physicsBody.dynamic 属性设置为 YES,则会触发 didBeginContact 事件。
有没有一种方法可以解决这个问题?
PS:我真的不需要我的节点是动态的,因为这会导致一个不必要的行为:飞机受损时会轻微移动,子弹有时会旋转飞行。