本文整理汇总了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);
}