기존 캐릭터 에셋에 들어있던 HP Bar는 슬라이더가 아니라 이미지여서 HP Bar를 만들었다.
HPBarCanvas이다.
1. 화면 특정 부분에 보이는게 아닌 캐릭터 위에 위치해서 계속 따라다닐 것이기 때문에 Render Mode를 World Space로 했다.
2. 추가적으로 캐릭터 이름을 담을 TextMeshPro도 캔버스에 넣어뒀다.
PlayerUI 플레이어가 가지고 있는 UI를 담당하는 스크립트이다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class PlayerUI : MonoBehaviour
{
private Color myColor = new Color(248, 255, 255);
private Color enemyColor = Color.red;
public TextMeshProUGUI playerName;
public Slider playerHPBar;
public void SetSliderValue(float currentHP, int maxHP)
{
playerHPBar.value = currentHP / maxHP;
}
}
1. Player의 닉네임은 TextMeshPro로 만들었기 때문에 TMPro 네임스페이스를 사용해주고,
2. HP Bar는 슬라이더이기 때문에 UI 네임스페이스를 사용했다.
3. public으로 TextMeshProUGUI playerName를 assign 해줬고,
4. Silder는 PlayerHPBar를 assign 해주었다.
5. 그리고 매개변수 float currentHP와 int maxHp를 받는 함수 SetSliderValue 를 만들었다.
public class PlayerStatus : MonoBehaviour
{
public PlayerUI PlayerUI { get; private set; }
public int MaxHP { get; set; }
private float currentHP;
public float CurrentHP
{
get { return currentHP; }
set
{
currentHP = value;
if (currentHP <= 0)
Die();
}
}
private void Start()
{
PlayerUI = GetComponent<PlayerUI>();
MaxHP = 100;
CurrentHP = MaxHP;
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Q))
{
SetDamage();
}
}
public void SetDamage(float attackPower = 5)
{
CurrentHP -= attackPower;
PlayerUI.SetSliderValue(currentHP, MaxHP);
print($"데미지 받음.... 현재체력 {CurrentHP}");
}
public void Die() { print("죽음"); }
}
1. PlayerUI를 Start에서 GetComponent로 가지고 왔다.
임시로 MaxHp는 100으로 설정해 뒀다.
2. SetDamage는 적 공격에 맞을 때 실행 될 함수이다. 임시로 AttackPower를 5로 줬다.
3. CurrentHP -= attackPower를 함으로써 CurrentHP에 Set을 한다.
4. CurrentHP의 값이 Set될 때마다 현재 체력을 0과 비교해서 같거나 낮으면 Die를 실행 한다.
6. 그리고 PlayerUI.SetSliderValue()를 실행해서 HPBar의 값을 변경한다.
7. Update문에 임시로 데미지를 받을 수 있게 Q키를 누를 때마다 체력이 닳게 했다.
https://www.youtube.com/watch?v=XCd5qfWz4q0
'Unity > Portfolio Daily Log' 카테고리의 다른 글
캐주얼 슈팅 액션 대전 게임 (모바일) - 8 포톤_4 피격 동기화 (0) | 2022.07.25 |
---|---|
캐주얼 슈팅 액션 대전 게임 (모바일) - 7 포톤_3 체력바, 닉네임 색깔로 적과 차별점 두기 (0) | 2022.07.22 |
캐주얼 슈팅 액션 대전 게임 (모바일) - 5 애니메이션에 맞춰 총 쏘기 (0) | 2022.07.20 |
캐주얼 슈팅 액션 대전 게임 (모바일) - 4 포톤_2 로컬 플레이어한테 카메라, 조이스틱 할당해주기 (0) | 2022.07.19 |
캐주얼 슈팅 액션 대전 게임 (모바일) - 3 포톤 환경 (0) | 2022.07.19 |