TIL (74) | 2023.11.09 | 피격 데미지 보여주기

kjg5370·2023년 11월 9일
0

TIL

목록 보기
72/91
post-thumbnail

들어가기 앞서

오늘은 피격 시 총알의 데미지를 보여주는 작업을 하였습니다.

오늘 배운 것

  • 피격 데미지를 표시할 UI 생성

    Hierarchy 우클릭 - UI - Text로 하나 생성해줍니다.

  • 스크립트 생성
    Damage를 표시할 스크립트를 하나 만들어줍니다.

    public class UIDamage : MonoBehaviour
    {
        [SerializeField]private TextMeshProUGUI damageText;
        [SerializeField]private float displayDuration = 1.5f; // 텍스트가 보이는 시간 설정
        [SerializeField]private float fadeDuration = 1.0f; // 텍스트가 사라지는 시간 설정
    
        private Coroutine fadeOutCoroutine;
        public void ShowDamageText(int damage, Vector3 position)
        {
            if (fadeOutCoroutine != null)
            {
                StopCoroutine(fadeOutCoroutine);
            }
            damageText.text = damage.ToString();
            damageText.transform.position = Camera.main.WorldToScreenPoint(position);
    
            fadeOutCoroutine = StartCoroutine(FadeOutText());
    
        }
    
        IEnumerator FadeOutText()
        {
            float elapsedTime = 0f;
            Color initialColor = damageText.color;
    
            while (elapsedTime < fadeDuration)
            {
                float alpha = Mathf.Lerp(1f, 0f, elapsedTime / fadeDuration);
                damageText.color = new Color(initialColor.r, initialColor.g, initialColor.b, alpha);
    
                elapsedTime += Time.deltaTime;
                yield return null;
            }
    
            damageText.text = "";
            damageText.color = initialColor;
    
        }
    }

코루틴으로 텍스트를 일정 시간 후 비활성화 시켜주고 ShowDamageText에서 데미지 값과 포지션 값을 받아서 표시를 해 줍니다.

  • Damage오브젝트 생성
    Canvas 아래에 빈 오브젝트를 만들고 Damage로 이름을 바꿔줍니다.
    위의 스크립트를 넣어주고 아까 만들었던 텍스트를 할당해줍니다.

  • UIManagerd에 연결
    UIManager에 연결해서 싱글톤을 이용합니다.

      [Header("Damage")]
        public UIDamage damageUI;
  • Take Damage에 연결
    피격 부분에 ShowDamageText함수를 넣어 줍니다.

    • Bullet.cs
       if (collision.gameObject.tag == "Enemy")
       {
           UIManager.Instance.damageUI.ShowDamageText((int)damage, collision.contacts[0].point);
       }
  • 결과

진행 사항

미니맵 ui 추가
혈흔 효과 풀 매니저 합치기
피격데미지 보여주기기

내일 할 일

  • 보스 포탈 수정
profile
학생입니다

0개의 댓글