본문 바로가기
게임 개발

팀파이트 매니저 - UnitUI추가

by WaDDak 2023. 9. 19.

유닛의 궁극기 상태, 체력, 마나 등을 표시해주는 UI를 추가했다.

마나통의 경우 Lerp를 적용해서 각 캐릭터가 가진 스킬의 쿨타임 만큼 서서히 회복되도록 했고.

스킬을 사용하기전까지는 마나가 초기화 되지않게 하였다.

 

GameUnit 에서 CreateComponent로 GameUnitUI를 생성해서 자식으로 두려고 했는데

그렇게 하니 어느 부분에서 잘못된건지 원하는 크기대로 이미지가 출력되지 않아서

그냥 Unit을 알게해서 그 유닛을 따라다니도록해서 해결했다.

Lerp를 처음 적용시켜 봤는데 나름 잘되는것 같아서 만족.

 

처음엔 AddImageScale로 크기를 증가시켜서 해볼려 했는데

적용 시켜보니 끝도없이 이미지 크기가 계속 늘어나고 있어서.

아 Set으로해서 한계를 정하지 않고 Add로 계속 늘려주기만하면 끊임없이 늘어나겠구나~ 해서

Set으로 변경하여 적용 하였다.

 

///// 추가해야할것/////

대미지 받을때 대미지 숫자로 출력되는것.

 

// 내일 할것 //

궁극기 추가.

Skill기능하도록 추가.

Damage 공식 생각해보기. (방어력 공격력 스킬계수)

 

void GameUnitUI::Update(float _Delta)
{
	Transform.SetWorldPosition(Unit->Transform.GetWorldPosition());

	{// mp 회복 부분
		MPValue += _Delta / Unit->GetSkillCooltime();
		if (MPValue >= 1.0f)
		{
			MPValue = 1.0f;
		}
		float Test = std::lerp(0.0f, 50.0f, MPValue);
		Renderer2->SetImageScale({ Test, 3.0f });


		if (GameUnitState::Skill == Unit->GetState())
		{
			MPValue = 0.0f;
			Renderer2->SetImageScale({ 0.0f,3.0f });
		}
	}

	{// hp 소모 부분
		float HPrate = Unit->GetHPRate();
		float Test = std::lerp(48.5f, 0.0f, 1.0f - HPrate);
		Renderer3->SetImageScale({ Test, 3.0f });
		if (Unit->GetHP() <= 0.0f)
		{
			Renderer3->SetImageScale({ 0.0f, 3.0f });
		}

		//Renderer3->SetImageScale({ 48.5f,3.0f });
	}

	if (Unit->GetState() == GameUnitState::Die)
	{
		AllRendererOff();
	}
}