本文整理汇总了C++中Monster::SetPosition方法的典型用法代码示例。如果您正苦于以下问题:C++ Monster::SetPosition方法的具体用法?C++ Monster::SetPosition怎么用?C++ Monster::SetPosition使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Monster
的用法示例。
在下文中一共展示了Monster::SetPosition方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: tick
//==============================================================================
void GameServer::tick()
{
/*float dt = (time_.elapsed() - lastTime_) * 0.001f;*/
lastTime_ = time_.elapsed();
/*if (actors_.size() < 100 && !testingStageActive_)
{
GenMonsters_();
}*/
auto collideWithGrid = [=](Actor* actor, EActorDirection direction)
{
auto& p = *actor;
float x = p.GetPosition().x;
float y = p.GetPosition().y;
bool collided = false;
if ((levelMap_.GetCell(x + 0.49f, y - 0.51f) != '.'
|| levelMap_.GetCell(x + 0.49f, y + 0.49f) != '.')
&& levelMap_.GetCell(x - slideThreshold_+ 0.5f, y) == '.'
&& (direction == EActorDirection::NORTH
|| direction == EActorDirection::SOUTH))
{
p.SetPosition(Vector2(x - slideThreshold_+ 0.0001f, p.GetPosition().y));
}
if (levelMap_.GetCell(x + slideThreshold_- 0.5f, y) == '.'
&&((levelMap_.GetCell(x - 0.5f, y - 0.51f) != '.'
|| levelMap_.GetCell(x - 0.5f, y + 0.49f) != '.')
&& (direction == EActorDirection::NORTH
|| direction == EActorDirection::SOUTH)))
{
p.SetPosition(Vector2(x + slideThreshold_- 0.0001f, p.GetPosition().y));
}
if (levelMap_.GetCell(x, y - slideThreshold_ + 0.5f) == '.'
&& (levelMap_.GetCell(x - 0.51f, y + 0.49f) != '.'
|| levelMap_.GetCell(x + 0.49f, y + 0.49f) != '.')
&& (direction == EActorDirection::EAST
|| direction == EActorDirection::WEST))
{
p.SetPosition(Vector2(p.GetPosition().x, y - slideThreshold_+ 0.0001f));
}
if ((levelMap_.GetCell(x + 0.49f, y - 0.5f) != '.'
|| levelMap_.GetCell(x - 0.51f, y - 0.5f) != '.')
&& levelMap_.GetCell(x, y + slideThreshold_- 0.5f) == '.'
&& (direction == EActorDirection::EAST
|| direction == EActorDirection::WEST))
{
p.SetPosition(Vector2(p.GetPosition().x, y + slideThreshold_ - 0.001f));
}
if (levelMap_.GetCell(x + 0.5f, y) != '.')
{
p.SetPosition(Vector2(round(x + 0.5f) - 0.5f, p.GetPosition().y));
collided = true;
}
if (levelMap_.GetCell(x - 0.51f, y) != '.')
{
p.SetPosition(Vector2(round(x - 0.5f) + 0.5f, p.GetPosition().y));
collided = true;
}
if (levelMap_.GetCell(x, y + 0.5f) != '.')
{
p.SetPosition(Vector2(p.GetPosition().x, round(y + 0.5f) - 0.5f));
collided = true;
}
if (levelMap_.GetCell(x, y - 0.51f) != '.')
{
p.SetPosition(Vector2(p.GetPosition().x, round(y - 0.5f) + 0.5f));
collided = true;
}
if (collided)
{
actor->OnCollideWorld();
}
};
for (Actor* actor: actors_)
{
if (actor->GetType() == EActorType::MONSTER)
{
Monster* monster = dynamic_cast<Monster*>(actor);
Creature* target = monster->target;
float distance2;
Vector2 m_pos = actor->GetPosition();
if (target && target != nullptr)
{
Vector2 t_pos = target->GetPosition();
distance2 = Sqr(m_pos.x - t_pos.x)
+ Sqr(m_pos.y - t_pos.y);
if (distance2 < 25)
//.........这里部分代码省略.........
示例2: Initialize
void GameState_HeightMap::Initialize( )
{
if (sky == nullptr)
{
sky = new SkyBox;
sky->Initialize("cloud_1.png", 2048, 512, 128);
//sky->Initialize("cloud_1.png", 4096);
}
if (heightMap == nullptr)
{
heightMap = new HeightMap;
heightMap->Initialize("field_.raw", "field_1.png");
//heightMap->Initialize("field_.raw", "field_1.png", 8, HEIGHT_FLAG::HM_NORMAL);
}
if (rock == nullptr)
{
rock = new Rocks_save( );
rock->Initialize( );
}
if (trees == nullptr)
{
trees = new PlantTree( );
trees->SetHeightMap(heightMap);
trees->Initialize( );
}
if (goat == nullptr)
{
goat = new Player( );
goat->Initialize("Goat/", "Goat.X");
goat->SetPosition(D3DXVECTOR3(193.0f, 12.0f, -306.0f));
goat->SetTrees(trees->GetTrees( ));
goat->SetHeightMap(heightMap);
goat->ChangeCharacterState(CharacterState::CHARACTER_IDLE);
GameManager::GetCamera( )->SetLookTarget(goat->GetPositionAddress( ));
}
if (statusBar == nullptr)
{
statusBar = new ChracterStatusBar;
statusBar->Initialize( );
}
if (quest == nullptr)
{
quest = new Quest;
quest->Initialize();
}
Monster* monster = nullptr;
monster = new Minion( );
monster->Initialize("Goat/", "Goat_white.x");
monster->SetPosition(D3DXVECTOR3(401, 22, -292));
monster->SetHeightMap(heightMap);
monster->ChangeCharacterState(CharacterState::CHARACTER_IDLE);
monsters.push_back(monster);
monster = nullptr;
monster = new Minion( );
monster->Initialize("Goat/", "Goat_white.x");
monster->SetPosition(D3DXVECTOR3(401, 22, -299));
monster->SetHeightMap(heightMap);
monster->ChangeCharacterState(CharacterState::CHARACTER_IDLE);
monsters.push_back(monster);
monster = nullptr;
monster = new Minion( );
monster->Initialize("Goat/", "Goat_white.x");
monster->SetPosition(D3DXVECTOR3(408, 22, -292));
monster->SetHeightMap(heightMap);
monster->ChangeCharacterState(CharacterState::CHARACTER_IDLE);
monsters.push_back(monster);
monster = nullptr;
monster = new Minion( );
monster->Initialize("Goat/", "Goat_white.x");
monster->SetPosition(D3DXVECTOR3(399, 22, -290));
monster->SetHeightMap(heightMap);
monster->ChangeCharacterState(CharacterState::CHARACTER_IDLE);
monsters.push_back(monster);
}