工作总结6(随时修改)

工作总结6(随时修改),第1张

概述战斗: 1.触摸层: _hotZone = LayerColor::create(Color4B(128, 128, 128, 128)); _hotZone->setPosition(Vec2(600,0)); //由于本游戏要求子d不能向后射,所以位置设置在这 _hotZone->setTouchEnabled(true); _hotZone->setContentSize(visi

战斗:

1.触摸层:

	_hotZone = Layercolor::create(color4B(128,128,128));	_hotZone->setposition(Vec2(600,0));  //由于本游戏要求子d不能向后射,所以位置设置在这	_hotZone->settouchEnabled(true);	_hotZone->setContentSize(visibleSize);	addChild(_hotZone,0);
2单点触摸

	/**单点触摸**/	EventListenertouchOneByOne* Listener = EventListenertouchOneByOne::create();	Listener->setSwallowtouches(true);	Listener->ontouchBegan = CC_CALLBACK_2(Battle::onPress,this);	Listener->ontouchmoved = CC_CALLBACK_2(Battle::onMove,this);	Listener->ontouchended = CC_CALLBACK_2(Battle::onRelease,this);	_eventdispatcher->addEventListenerWithSceneGraPHPriority(Listener,this);	_eventdispatcher->setPriority(Listener,1);//第二个参数是优先级,数值越小优先级越高
3. 事件侦听

	EventListenerCustom* bossShootListener = EventListenerCustom::create(BOSS_SHOOT,CC_CALLBACK_1(Battle::bossShoot,this));	_eventdispatcher->addEventListenerWithFixedPriority(bossShootListener,1);
4. 碰撞

1).子d与士兵的碰撞

版本1:

	Vector<Bullet*>::iterator itb = _bulletVec.begin();	while (itb != _bulletVec.end())	{		Bullet* itbullet = (*itb);		Vector<SoldIEr*>::iterator its = _soldIErVec.begin();		bool flag = false;		while (its != _soldIErVec.end())		{			SoldIEr* itsoldIEr = (*its);			if (itsoldIEr->hit(itbullet->getposition()))			{                <span >		</span>flag = true;						int Nowlife = itsoldIEr->hurt();				if (Nowlife <= 0)				{					itsoldIEr->dIE();					its = _soldIErVec.erase(its);				}				itbullet->resetBullet();				itb = _bulletVec.erase(itb);				break;			}			else			{				its++;			}		}		if (!flag)		{			++itb;		}	}
版本2:

	for (Node* a : _bulletVec)	{		Bullet* bullet = (Bullet*)a;		Rect bulletRect = bullet->getRect();		for (Node* b : _soldIErVec)		{			SoldIEr* soldIEr = (SoldIEr*)b;			Rect soldIErRect = soldIEr->getRect();			if (bulletRect.intersectsRect(soldIErRect))			{				if (!bullet->getHurtObj())				{										if (soldIEr->hurt(bullet->getdamage()))//在hurt函数中判断是否死亡					{						bullet->setHurtObj(soldIEr);						_soldIErVec.eraSEObject(soldIEr);						return;					}								bullet->setHurtObj(soldIEr);				}				else				{					if (bullet->getHurtObj() != soldIEr)					{						if (soldIEr->hurt(bullet->getdamage()))						{							_soldIErVec.eraSEObject(soldIEr);						}						bulletBoom(bullet);  //爆炸效果						return;					}				}			}		}	}
2)子d和boss碰撞(与上述的类似)

	for (Node* a : _bulletVec)	{		Bullet* bullet = (Bullet*)a;		Rect bulletRect = bullet->getRect();		for (Node* b : _bossvec)		{			Boss* boss = (Boss*)b;			Rect bossRect = boss->getRect();			if (bulletRect.intersectsRect(bossRect))			{				if (boss->hurt(bullet->getdamage()))				{					_bossvec.eraSEObject(boss);				}				bulletBoom(bullet);				_bulletVec.eraSEObject(bullet);				return;			}		}	}
3)地方子d与武将碰撞

	for (Node* a : _enemyBulletVec)	{		Bullet* bullet = (Bullet*)a;		Rect bulletRect = bullet->getRect();		Rect bossRect = _general->getRect();		if (bulletRect.intersectsRect(bossRect))		{			_general->hurt(bullet->getdamage());			bulletBoom(bullet);			_enemyBulletVec.eraSEObject(bullet);			return;		}	}
总结

以上是内存溢出为你收集整理的工作总结6(随时修改)全部内容,希望文章能够帮你解决工作总结6(随时修改)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1036167.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存