7

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プロパティを指定すると、発火します。YESAirplaneNodeBulletNodedidBeginContact

それを修正する方法はありますか?

PS:ノードが動的である必要はありません。これは、望ましくない動作を引き起こすためです。航空機が損傷を受けるとわずかに動き、飛行中に弾丸が回転することがあります。

4

1 に答える 1