+ CombatPlayer 기능별 분리 + Combat, CombatUi 전용 input action map 추가 + 스킬 시스템 로직 수정 + 전투플레이어 스킬(검의 왈츠) 로직 변경
67 lines
1.9 KiB
C#
67 lines
1.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Sirenix.OdinInspector;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
// ReSharper disable once CheckNamespace
|
|
namespace BlueWaterProject
|
|
{
|
|
public class HeartHpUi : MonoBehaviour
|
|
{
|
|
[SerializeField, Required] private Transform heartsLayout;
|
|
[SerializeField, Required] private GameObject heartPrefab;
|
|
|
|
[Range(1, 10)]
|
|
[SerializeField] private int maxHeartCount = 5;
|
|
[SerializeField] private List<Image> heartImageList = new();
|
|
|
|
// Resources
|
|
[SerializeField] private Sprite fullHeart;
|
|
[SerializeField] private Sprite halfHeart;
|
|
[SerializeField] private Sprite emptyHeart;
|
|
|
|
private void Awake()
|
|
{
|
|
InitHeart();
|
|
}
|
|
|
|
private void InitHeart()
|
|
{
|
|
foreach (Transform element in heartsLayout)
|
|
{
|
|
Destroy(element.gameObject);
|
|
}
|
|
|
|
heartImageList = new List<Image>(maxHeartCount);
|
|
|
|
for (var i = 0; i < maxHeartCount; i++)
|
|
{
|
|
var newHeart = Instantiate(heartPrefab, heartsLayout).GetComponent<Image>();
|
|
heartImageList.Add(newHeart);
|
|
}
|
|
}
|
|
|
|
public void SetCurrentHp(int currentHp)
|
|
{
|
|
var fullHearts = currentHp / 2;
|
|
var existHalfHeart = currentHp % 2 != 0;
|
|
|
|
for (var i = 0; i < heartImageList.Count; i++)
|
|
{
|
|
if (i < fullHearts)
|
|
{
|
|
heartImageList[i].sprite = fullHeart;
|
|
}
|
|
else if (i == fullHearts && existHalfHeart)
|
|
{
|
|
heartImageList[i].sprite = halfHeart;
|
|
}
|
|
else
|
|
{
|
|
heartImageList[i].sprite = emptyHeart;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |