飞机大战之六:敌机爆炸(碰撞检测)

来源:互联网 发布:nginx 内置时间变量 编辑:程序博客网 时间:2024/06/06 12:43

参考网址:http://blog.csdn.net/jackystudio/article/details/11917875


源码下载地址:点击打开链接

关于svn的简单使用:点击打开链接


1.修改以上篇章中的错误遗漏(不然运行会报错)

在 BulletLayer.cpp AddBullet 中添加 this->m_pAllBullet->addObject(bullet);

在 EnemyLayer.cpp enemy1Blowup中 添加一个参数 NULL,

即 CCSequence *sequence = CCSequence::create(animate,removeEnemy1,NULL);


2. 对GameLayer的修改

在 GameLayer.h 文件中的 class 中 增加成员函数 void update(float delta);

在 GameLayer.cpp 实现该成员函数

void GameLayer::update(float delta){    CCArray *bulletsToDelete = CCArray::create();    bulletsToDelete->retain();    CCObject *bt, *et;    CCARRAY_FOREACH(this->bulletLayer->m_pAllBullet, bt)    {        CCSprite *bullet = (CCSprite*)bt;        CCArray *enemy1sToDelete = CCArray::create();        enemy1sToDelete->retain();        int a = this->enemyLayer->m_pAllEnemy1->capacity();        CCARRAY_FOREACH(this->enemyLayer->m_pAllEnemy1, et)        {            Enemy *enemy1 = (Enemy*)et;            if(bullet->boundingBox().intersectsRect(enemy1->getBoundingBox()))            {                if(enemy1->getLife() == 1)                {                    enemy1->loseLife();                    bulletsToDelete->addObject(bullet);                    enemy1sToDelete->addObject(enemy1);                }                else ;            }        }        CCARRAY_FOREACH(enemy1sToDelete, et)        {            Enemy *enemy1 = (Enemy*)et;            this->enemyLayer->enemy1Blowup(enemy1);        }        enemy1sToDelete->release();    }    CCARRAY_FOREACH(bulletsToDelete, bt)    {        CCSprite *bullet = (CCSprite*)bt;        this->bulletLayer->RemoveBullet(bullet);    }    bulletsToDelete->release();}

并在 GameLayer::init() 中添加  this->scheduleUpdate();

3. 编译运行结果如图:


0 0
原创粉丝点击