0

私はObjective-cを初めて使用します。私は現在、cocos2dとbox2dを使用したゲームに取り組んでいます。私のゲームについて詳しく説明しましょう。

私のゲームでは、建物の上に主人公が立っています。建物の下にはこの道があります。敵はさまざまなランダムな速度で道路を通り過ぎ、右から画面に入り、左から出ます。敵をb2_dynamicBodiesとして作成し、SetLinearVelocity()を使用してそれぞれにランダムな速度を設定しました。主人公が敵を撃ちます。発射物が敵に当たると、発射物と敵の両方が破壊されます。私がやりたいのは、撃たれていない敵が画面の外に移動した場合、座標をチェックして画面の外に移動した敵を破壊したいということです。world-> DestroyBody(body)を使ってみましたが、うまくいきません。plsはこれで私を助けます!

ps敵を個別のボディとして作成しているわけではありませんが、ボディを作成して移動させるメソッドがあり、時間間隔を置いてinit内でメソッドを呼び出しています。

4

1 に答える 1

1

スプライトにタグを割り当てます。ここでは10を使用しています。スプライトがx位置を取得して画面から移動することを確認します。0未満または480より大きい場合(横向きの場合)、次のコードを使用してそれを破棄します。体。

for (b2Body* b = world->GetBodyList(); b; b = b->GetNext())
{

    if (b->GetUserData() != NULL) {

        CCSprite *temp1 = (CCSprite*)b->GetUserData();

        if(temp1.tag == 10)
        {
            NSLog(@"Destroying here");
                            world->DestroyBody(b);
            [self removeChild:temp1 cleanup:YES];


        }

    }

}

于 2011-04-12T08:53:19.527 に答える