-
[TIL] 9주차 1일 팀 프로젝트 마무리 단계 ( OnTriggerEnter )개발일지/스파르타 코딩클럽 부트캠프 2024. 6. 10. 21:20
오늘 한 것
- 플레이어 HP 구현
- HealRoom 구현
- 여러가지 버그 수정
시간이 없는 관계로 저번 개인과제때부터 썼던 코드를 많이 가져와서 썼다.
PlayerCondition 부분의 경우에는
PlayerCondition
Condition
UICondition
3가지 클래스로 나누어서 작업을 했다.
using UnityEngine; using UnityEngine.UI; public class Condition : MonoBehaviour { public float curValue; public float startValue; public float maxValue; public float passiveValue; public Image uiBar; void Start() { curValue = startValue; } void Update() { uiBar.fillAmount = GetPercentage(); } private float GetPercentage() { return curValue / maxValue; } public void Add(float value) { curValue = Mathf.Min(curValue + value, maxValue); } public void Subtract(float value) { curValue = Mathf.Max(curValue - value, 0); } }
Condition 부분에서는 중점적인 기능을 관리한다.
HP바의 FillAmount부분, 체력이 회복되고 줄어드는 부분 로직 자체를 구성한다.
그리고 그걸 작동시키는 건 PlayerCondition에서 한다.
using System; using System.Collections; using UnityEngine; using UnityEngine.SceneManagement; public interface IDamagable { void TakePhysicalDamage(int damage); } public class PlayerCondition : MonoBehaviour, IDamagable { public UICondition uiCondition; public PlayerController controller; Condition health { get { return uiCondition.health; } } public event Action onTakeDamage; void Start() { controller = GetComponent<PlayerController>(); } void Update() { if (health.curValue <= 0f) { Die(); } } public void Heal(float amount) { health.Add(amount); } private void Die() { SceneManager.LoadScene("PSH_Scene"); } public void TakePhysicalDamage(int damage) { health.Subtract(damage); onTakeDamage?.Invoke(); } }
TakePhysicalDamage 함수를 작동시켜서 플레이어가 데미지를 입게끔 만든다.
public class HealPack : MonoBehaviour { public int healPackAmount; private void OnTriggerEnter(Collider other) { if(other.gameObject.tag == "Player") { CharacterManager.Instance.player.condition.Heal(healPackAmount); Destroy(gameObject); } } }
HealPack 같은 경우에는 간단하게 OnTriggerEnter로 구현을 했다.
Condition 클래스에 있는 Heal을 사용.
'개발일지 > 스파르타 코딩클럽 부트캠프' 카테고리의 다른 글
[TIL] 9주차 3일 유니티 심화 과정 ( 파티클, 사운드 컨트롤 ) (0) 2024.06.12 [TIL] 9주차 2일 팀 프로젝트 마무리 (2) 2024.06.11 [TIL] 8주차 5일 팀 프로젝트 진행 , 시험 (2) 2024.06.07 [TIL] 8주차 3일 팀 프로젝트 진행 ( Raycast, Instantiate ) (2) 2024.06.05 [TIL] 8주차 2일 팀 프로젝트 진행 (2) 2024.06.04