如何基于box2d中的位置摧毁一个体?

时间:2011-04-03 03:35:22

标签: objective-c box2d-iphone

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

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

P.S。我不是将敌人创建为单独的不同身体,但我有一个创建一个身体并使其移动的方法,然后我在一个时间间隔内调用了init中的方法。

1 个答案:

答案 0 :(得分: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];


        }

    }

}