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


C++ Monster::SetPosition方法代码示例

本文整理汇总了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)
//.........这里部分代码省略.........
开发者ID:dahin,项目名称:fefu-mmorpg,代码行数:101,代码来源:GameServer.cpp

示例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);

}
开发者ID:naknaknak,项目名称:3D_Game_Portfolio,代码行数:83,代码来源:GameState_HeightMap.cpp


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