2 つの物理体があります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
ただし、またはのいずれかにphysicsBody.dynamic
プロパティを指定すると、発火します。YES
AirplaneNode
BulletNode
didBeginContact
それを修正する方法はありますか?
PS:ノードが動的である必要はありません。これは、望ましくない動作を引き起こすためです。航空機が損傷を受けるとわずかに動き、飛行中に弾丸が回転することがあります。