cocos2dx游戏开发简单入门视频教程 (cocos2d-x)- 第3天
来源:未知 责任编辑:责任编辑 发表时间:2014-02-02 17:44 点击:次
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://v.youku.com/v_show/id_XNjY1MTI3NjYw.html 第5课
http://v.youku.com/v_show/id_XNjY1MTI5ODQw.html 第6课
高清还请从百度网盘下载。
转载请注明出处:http://blog.csdn.net/xingxiliang/article/details/18557631
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 进入详细评论页>>

![cocos2d_x+lua[2]](/uploads/allimg/131030/110J64609-0-lp.jpg)








