第1天的地址:
http://blog.csdn.net/xingxiliang/article/details/18557631
书接上回:今天我们让我们的飞镖可以打死怪物。
avi版本可以方便的在手机,pc上查看。下载地址:http://pan.baidu.com/s/1ELk78
1. 数据结构的选择
// array 插入 删除效率低 ;查找、遍历效率高
// list 插入 删除效率高;查找、遍历效率 低
// 添删:怪物出现 飞镖出现 碰撞 用的次数少
// 遍历: 1.0/fps 时间进行一次遍历 用的次数多
// 选用array
2. 碰撞检测的函数
void HelloWorld::update(float delta) // delta = 1.0 / fps { CCArray* targetToDelete = new CCArray; CCArray* projToDelete = new CCArray; CCObject* itarget; CCObject* iproj; CCARRAY_FOREACH(_targets, itarget){ CCSprite* target = (CCSprite*)itarget; CCRect targetZone = CCRectMake(target->getPositionX(), target->getPositionY(), target->getContentSize().width, target->getContentSize().height); CCARRAY_FOREACH(_projs, iproj){ CCSprite* proj = (CCSprite*)iproj; CCRect projZone = CCRectMake(proj->getPositionX(), proj->getPositionY(), proj->getContentSize().width, proj->getContentSize().height); if (projZone.intersectsRect(targetZone)){ projToDelete->addObject(iproj); targetToDelete->addObject(itarget); } } // end of iterate projectile } // end of iterate target CCARRAY_FOREACH(projToDelete, iproj){ _projs->removeObject(iproj); CCSprite* proj = (CCSprite*)iproj; proj->removeFromParentAndCleanup(true); } CCARRAY_FOREACH(targetToDelete, itarget){ _targets->removeObject(itarget); CCSprite* target = (CCSprite*)itarget; target->removeFromParentAndCleanup(true); } targetToDelete->release(); projToDelete->release();}
注意:不可以在遍历CCArray的同时 从CCArray中删除成员。
3. 使用CCSprite->setTag(int)
这样可以为每一种不同的精灵打上标志,区分不同精灵。
上传到了优酷
http://v.youku.com/v_show/id_XNjY0MjEzNzI0.html 第1课
http://v.youku.com/v_show/id_XNjY0MjMzMzYw.html 第2课
http://v.youku.com/v_show/id_XNjY0MjU1OTcy.html 第3课
http://v.youku.com/v_show/id_XNjY0MzQxMDE2.html 第4课
高清还请从百度网盘下载。
转载请注明出处:http://blog.csdn.net/xingxiliang/article/details/18557631