유니티

데미지 텍스트 효과

잼잼재미 2023. 12. 21. 18:09

 

플레이어가 공격 시, 데미지를 표시한다.

 

 

구현 방법


1. Object 생성

 

DamageText 오브젝트 생성하고 자식으로 Text 빈오브젝트 생성

 

2. TextMeshPro - Text 컴포넌트 추가

 

Text 빈오브젝트에 TextMeshPro - Text 컴포넌트 추가

 

 

3. Text 위치 설정

 

숫자를 입력하고, 최대한 부모 오브젝트와 크기, 위치를 맞춘다. 

그리고 부모 오브젝트의 Color의 A 값을 0으로 투명하게 해준다.

 

 

4. 프리팹화

 

DamageText 오브젝트를 프리팹화 한다.

 

 

5. 스크립트 추가

DamageText 스크립트

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using UnityEngine.UI;

public class DamageText : MonoBehaviour
{
    [SerializeField] private float _speed;
    [SerializeField] private float _destroyTime;
    [SerializeField] private TMP_Text _damageText;
    [SerializeField] private GameObject _damageTextPrefab;
    [SerializeField] private Vector3 _position;

    private void Start()
    {
        Invoke("DestroyPrefab", _destroyTime);
    }

    void Update()
    {
        transform.position += new Vector3(0, 1, 0) * Time.deltaTime * _speed;
    }

    public void CreateText(Vector3 position)
    {
        _damageText.text = "1234";
        _damageText.color = new Color(255 / 255f, 255 / 255f, 255 / 255f, 255 / 255f);

        Instantiate(_damageTextPrefab, new Vector3(position.x + _position.x, position.y + _position.y, 0), Quaternion.identity);
    }

    private void DestroyPrefab()
    {
        Destroy(gameObject);
    }
}

 

"1234" 부분에 데미지 변수를 받아오면 된다.

 

 

MouseClick 스크립트 (DamageText 함수 실행 스크립트)

[SerializeField] private GameObject _damageTextPrefab;
[SerializeField] private DamageText _damageText;

void Update()
{
    if(Input.GetMouseButtonDown(0))
    {
        Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        _damageText.CreateText(mousePos);
    }
}

 

마우스 클릭하는 곳의 위치를 받아서 CreateText 함수를 실행한다.

 

 

6.  스크립트, 인스펙터 연결

 

DamageText 프리팹에 DamageText 스크립트를 연결한다.

그리고 인스펙터창에서 값 설정, 연결해준다.

Position 값을 설정해서 정확한 위치를 설정할 수 있다.

 

 

 

마찬가지로, CreateText 함수를 실행할 스크립트도 추가, 연결한다.

 

 

구현 완료


 

클릭하는 위치에 텍스트가 나타났다가 설정한 시간 후, 사라진다.

Player의 데미지를 받아와서 적용하면 데미지 텍스트 효과를 낼 수 있다.

 

 

 

'유니티' 카테고리의 다른 글

프로빌더(ProBuilder)  (0) 2023.12.21
Input 메서드 정리  (1) 2023.12.21
카메라 진동 효과  (0) 2023.12.21
칼라 변경  (0) 2023.12.20
인벤토리 만들기  (0) 2023.12.14