0

我是objective-c的新手。我目前正在使用 cocos2d 和 box2d 开发游戏。让我详细描述一下我的游戏:

在我的游戏中,我有一个主角站在建筑物的顶部。楼下就是这条路。敌人以各种随机速度从道路上经过,从右侧进入屏幕并从左侧退出。我将敌人创建为 b2_dynamicBodies 并使用 SetLinearVelocity() 为每个敌人设置随机速度。主角射击敌人。当弹丸击中敌人时,弹丸和敌人都会被摧毁。我想要做的是那些没有被射击并且移出屏幕的敌人,我想通过检查他们的坐标来摧毁这些敌人一旦他们移出屏幕。我曾尝试使用 world->DestroyBody(body),但它不起作用。请帮我解决这个问题!

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 回答