加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

笨木头老师《卡牌塔防》学习中遇到问题记录

发布时间:2020-12-14 16:33:16 所属栏目:百科 来源:网络整理
导读:首先感谢笨木头,《cocos2d-x 3.x开发之旅》是一本很精彩的书,很庆幸自己能坚持把最后的卡牌塔防的实例学完,现把实例学习中碰到问题记录下来,希望碰到问题的伙伴们能一起交流....... 1、怪物在被打死之后,发现炮塔不再攻击,查了下是英雄没有重新选择怪

首先感谢笨木头,《cocos2d-x 3.x开发之旅》是一本很精彩的书,很庆幸自己能坚持把最后的卡牌塔防的实例学完,现把实例学习中碰到问题记录下来,希望碰到问题的伙伴们能一起交流.......

1、怪物在被打死之后,发现炮塔不再攻击,查了下是英雄没有重新选择怪物导致。在怪物死亡后将其设置为不可见即可。如下(由于个人喜好对类名添加了kptf四个字母):

voidkptfMonster::onDead(){

//如果怪物死亡则删除怪物

this->setVisible(false);//将怪物设置成不可见,因选取攻击对象时会以可见作为选取条件

this->removeFromParent();

//this->removeAllChildrenWithCleanup(true);

}


2、c onvertToWorldSpace的报错:在最后判断胜利的时候报

convertToWorldSpace Thread 1:EXC_BAD_ACCESS(code=1,addresss=0x0)查了下应该是按书上的源码删除了怪物列表里的怪物导致的报错。

将判断胜利条件修改下,如下(注释部分为书给的示例)

void kptfMonsterManager::logic(float dt){

Vector<kptfMonster*>monsterWantToDelete;

for (auto monster:m_monsterList) {

if (monster->isMoveEnd()==true) {

monsterWantToDelete.pushBack(monster);

}

else if(monster->isDead()==true ){

monsterWantToDelete.pushBack(monster);

}

}

// for (auto monster:monsterWantToDelete) {

// monster->removeFromParent();

// m_monsterList.eraSEObject(monster);

// }

//

// if (m_monsterList.size()==0) {

// NOTIFY->postNotification("AllMonsterDead");

// }

if (m_monsterList.size()==monsterWantToDelete.size()) {

NOTIFY->postNotification("AllMonsterDead");

}

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读