当前位置: 首页>>代码示例>>C++>>正文


C++ CBullet::Initlize方法代码示例

本文整理汇总了C++中CBullet::Initlize方法的典型用法代码示例。如果您正苦于以下问题:C++ CBullet::Initlize方法的具体用法?C++ CBullet::Initlize怎么用?C++ CBullet::Initlize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CBullet的用法示例。


在下文中一共展示了CBullet::Initlize方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: Update

void CEnemyWallShooter::Update(CTimer* gameTime, Megaman* rockman)
{
	//Nếu thời gian phòng thủ đã hết
	if (_timeDefense <= 0
		&& _state==ENEMYWALLSHOOTER_STATE::DEFENSE)
	{
		_state = ENEMYWALLSHOOTER_STATE::ATTACK;
		_sprite.SetFrame(1, 3);
	}

	#pragma region Trạng thái tấn công
	if (_state == ENEMYWALLSHOOTER_STATE::ATTACK)
	{
		if (_sprite.GetIndex() == 3)
		{
			_sprite.SetIndex(3);//Chỉ vẽ sprite có súng dài nhất
		}
		_timeDelayFireRemain -= gameTime->GetTime();
		if (_timeDelayFireRemain <= 0)
		{
			//Tìm vị trí của viên đạn
			float posY = _position.y;
			//angleFly: Góc bắn của viên đạn, lấy trục dương Ox làm gốc tọa độ. Đơn vị Radian
			float posX, angleFly;
			//Giá trị để cho biết hướng bay của đạn là qua trái (1) hay qua phải (-1).
			int vectorXOfFLyOfBullet = 1;
			if (_orientation == ENEMYWALLSHOOTER_ORIENTATION::LEFT)
			{
				posX = _position.x - 1 * _sprite.GetFrameWidth() / 2;
				angleFly = PI / 2.0f + PI / 4.0f;
				vectorXOfFLyOfBullet = 1;
			}
			else
			{
				posX = _position.x + 1 * _sprite.GetFrameWidth() / 2;
				angleFly = 2 * PI + PI / 4.0f;
				vectorXOfFLyOfBullet = -1;
			}
			//Tính toán góc bắn cho viên đạn sắp bắn ra dựa vào số thứ tự viên đạn trước đó.
			angleFly = angleFly + vectorXOfFLyOfBullet * (_numOfPrevBullet++*(PI / 6.0f));//Cần phải nhân vectorXOfFLyOfBullet là do khi đạn bay sang phải thì góc bắn theo thứ tự phải là trừ dần so với góc đã xác định ban đầu.

			//Để chắc ăn là đạn không còn trước khi được add vào thì tiến hành clear() trước
			_lstBullet.clear();
			//Thêm đạn vào list Đạn
			CBullet*  bullet = new CEnemyMachineAutoBullet(0, ID_BULLET_WALL_SHOOTER,
				ResourceManager::GetSprite(ID_SPRITE_BULLET_RED_COLOR),
				DAME_BULLET_WALL_SHOOTER, 120.f / 1000.0f, D3DXVECTOR2(posX, posY), angleFly);
			bullet->Initlize();
			_lstBullet.push_back(bullet);
			ResourceManager::PlayASound(ID_EFFECT_ENEMY_FIRE);

			//Reset thời gian nghỉ còn lại giữa 2 lần bắn 
			_timeDelayFireRemain = TIME_DELAY_FIRE_OF_WALL_SHOOTER_ENEMY;
			//Nếu viên đạn vừa bắn có _numOfPrevBullet == 4 thì reset về giá trị 0 để lần tới tiếp tục bắn từ viên thứ 1.
			if (_numOfPrevBullet == 4)
			{
				_numOfPrevBullet = 0;
				_sprite.SetFrame(2, 0);
			}
		}

		if (_sprite.GetIndex() == 0)
		{
			_sprite.SetIndex(0);
			_state = ENEMYWALLSHOOTER_STATE::DEFENSE;//Chuyển về trạng thái phòng thủ
			_timeDefense = TIME_DEFENSE_OF_WALL_SHOOTER_ENEMY;
		}
	}
	#pragma endregion	

	#pragma region Trạng thái phòng thủ
	if (_state == ENEMYWALLSHOOTER_STATE::DEFENSE)
	{
		_timeDefense -= gameTime->GetTime();
	}
	#pragma endregion

	_isHitDame = false;
	this->UpdateBox();
	_sprite.SetAllowAnimate(100);
	_sprite.Update(gameTime);
}
开发者ID:hyubyn,项目名称:RockMan-Summer,代码行数:82,代码来源:CEnemyWallShooter.cpp


注:本文中的CBullet::Initlize方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。