【cocos2d-x IOS游戏开发-捕鱼达人12】鱼群效果

原创 2013年12月05日 22:12:23

尊重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/17149543

上节回顾

【cocos2d-x IOS游戏开发-捕鱼达人11】鱼的产生和移动:完善


1、  鱼群效果设计

鱼群效果描述
一群鱼,保持队形(相对位置不变)从一个点移向另一个点

鱼群数据
锚点
速度
对应的鱼
初始位置
目标位置

处于鱼群中的鱼的数据
对应的鱼的模板ID
相对于鱼群锚点的偏移


2、  鱼群效果实现

需要处理的问题
鱼群出来时,其它鱼如何散场
鱼群走后,其它鱼如何回到场景
何时出现鱼群


先看下update的状态变换:

void CGameLogic::update( float dt )
		{
			if(m_eGameState != EGS_GAME_PLAY)
				return;
			m_fTime += dt;

			switch(m_iSubState)
			{
			case EGPS_NORMAL:
				{
					static float total = 0;
					total+=dt;
					if(total > 3){
						if(m_vecObjectsList.size()< config::CGameConfig::getMaxFishNum()){
							createGameObject();
						}
						total = 0;
					}

					const std::vector<fishingjoy::config::SFishGroupData>& rGroupData = fishingjoy::config::CFishGroup::getGroupData();

					CCLOG("m_fTime = %f,rGroupData[0].BeginTime = %f",m_fTime, rGroupData[0].BeginTime);

					for(size_t i = 0; i < rGroupData.size(); ++i){
						if(abs(m_fTime - rGroupData[i].BeginTime)<1){
							m_iSubState = EGPS_GROUP_COME;

							int extend = config::CGameConfig::getExtendSize();

							float xs[] = {-extend,480+extend,	480+extend,-extend};
							float ys[] = {-extend,-extend,		320+extend,320+extend};

							std::vector<CGameObject*>::iterator it = m_vecObjectsList.begin();
							std::vector<CGameObject*>::iterator end = m_vecObjectsList.end();
							for(;it!=end;++it){
								int randx = CCRANDOM_0_1()*4;
								int randy = CCRANDOM_0_1()*4;
								(*it)->setTarget(xs[randx],ys[randy]);
							}
							m_pGroupData = &rGroupData[i];
							m_fGroupTime = m_fTime;
							break;
						}
					}
				}
				break;
			case EGPS_GROUP_COME:
				{
					if(m_fTime > m_fGroupTime + GROUP_COME_TIME){
						m_iSubState = EGPS_GROUP;

						for(int i = 0; i < m_pGroupData->Fishs.size(); ++i){
							const config::SFishInGroup& rInGroup = m_pGroupData->Fishs[i];
							createGameObject(rInGroup.FID,rInGroup.OffsetX + m_pGroupData->X + m_pGroupData->AnchorX,
								rInGroup.OffsetY + m_pGroupData->Y + m_pGroupData->AnchorY,m_pGroupData->Speed
								,rInGroup.OffsetX + m_pGroupData->TargetX + m_pGroupData->AnchorX,
								rInGroup.OffsetY + m_pGroupData->TargetY + m_pGroupData->AnchorY);
						}
						m_fGroupTime = m_fTime;
						break;
					}
				}
				break;
			case EGPS_GROUP:
				{
					if(m_fTime >  m_fGroupTime + m_pGroupData->LastTime){
						m_iSubState = EGPS_GROUP_GO;
						m_fGroupTime = m_fTime;
					}
				}
				break;
			case EGPS_GROUP_GO:
				{
					if(m_fTime > m_fGroupTime+ GROUP_GO_TIME){
						std::vector<CGameObject*>::iterator it = m_vecObjectsList.begin();
						std::vector<CGameObject*>::iterator end = m_vecObjectsList.end();
						for(;it!=end;++it){
							(*it)->randomTarget();
						}
						m_iSubState = EGPS_NORMAL;
					}
				}
				break;
			}

			if(m_pGameScene)
				m_pGameScene->update(dt);

			std::vector<CGameObject*>::iterator it = m_vecObjectsList.begin();
			std::vector<CGameObject*>::iterator end = m_vecObjectsList.end();
			for(;it!=end;++it){
				(*it)->update(dt);
			}
		}

本节源代码与工程文件:【资源引用页】


思考:如何实现有旋转,非直线轨迹的鱼群效果?

相关文章推荐

【cocos2d-x IOS游戏开发捕鱼达人22】资源引用页

尊重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/17163607 1、【cocos2d-x I...

【cocos2d-x IOS游戏开发-捕鱼达人1】内容介绍

学习是永无止境的,通过项目的实战操作,在开发一个完整的游戏过程中,将基础的、零散的知识结合起来,这样才能从整理上对框架有一个很好的认识。所以博主决定一边学习新的知识,一边以实战项目为主,对之前学习过的...

【cocos2d-x IOS游戏开发-捕鱼达人5】C++中函数代理与信号插槽机制

尊重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/17140521 上节回顾 【cocos2d-x I...

【cocos2d-x IOS游戏开发-捕鱼达人11】鱼的产生和移动:完善

尊重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/17144971 上节回顾 【cocos2d-x I...

【cocos2d-x IOS游戏开发-捕鱼达人18】积分板实现

尊重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/17153099 上节回顾 【cocos2d-x ...

【cocos2d-x IOS游戏开发-捕鱼达人19】音乐与音效的实现

尊重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/17151883 上节回顾 【cocos2d-x I...

【cocos2d-x IOS游戏开发-捕鱼达人17】炮弹攻击判定

尊重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/17151883 上节回顾 【cocos2d-...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【cocos2d-x IOS游戏开发-捕鱼达人12】鱼群效果
举报原因:
原因补充:

(最多只允许输入30个字)