유니티 2D 게임 만들어보기

타일 맵 추가, 몬스터 데미지 텍스트 이펙트 추가

미로의 2022. 7. 12. 20:30

배경이 너무 휑하여

적당한 애셋을 찾아

타일맵을 추가 하였다,

 

 

 

몬스터 데미지 이펙트 추가

 

 

TextProMesh를 이용해서 만들었다

기본 UI Text를 쓰면 아무래도 canvas를 따로 만들어야 해서 ProMesh를 사용하였다.

그리고 추가로 애니메이션을 만들어 

이펙트를 주었다.

 

그리고 이펙트를 오브젝트 풀링을 하기위한 간단하게 만들었다.

더보기

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameMgr : MonoBehaviour
{
    static public GameMgr Inst;

    [Header("ObjPool")]
    public GameObject damageTxt_Prefab;
    public Transform damageTxtTr; 

    //DamageTxt
    public Stack<DamageTxt> DamageTxt_Pool = new Stack<DamageTxt>();

    private void Awake()
    {
        Inst = this;
    }

    private void Start()
    {
        Create_ObjPool();
    }

    void Create_ObjPool()
    {
        for (int i = 0; i < 20; i++)
        {
            DamageTxt_Pool.Push(Instantiate(damageTxt_Prefab, damageTxtTr).GetComponent<DamageTxt>());
        }
    }

     public void Pop_DamageTxt(int value, Vector3 pos)
    {
        DamageTxt obj;
        if (DamageTxt_Pool.Count <= 0)
            obj = Instantiate(damageTxt_Prefab, damageTxtTr).GetComponent<DamageTxt>();
        else
            obj = DamageTxt_Pool.Pop();

        obj.SetDamageTxt(value, pos);       
    }

    public void PushBack_DamageTxt(DamageTxt obj)
    {
        DamageTxt_Pool.Push(obj);
    }

}

 

더보기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class DamageTxt : MonoBehaviour
{
   public  TextMeshPro textMeshPro;


    private void OnEnable()
    {
        textMeshPro.fontSize = 1;
    }

    private void Update()
    {
        if (textMeshPro.fontSize.Equals(0))
            OffDamageTxt();
    }

    public void SetDamageTxt(int value, Vector3 pos)
    {
        transform.position = pos;
        textMeshPro.text = value.ToString();

        gameObject.SetActive(true);
    }

    void OffDamageTxt()
    {
        gameObject.SetActive(false);
        GameMgr.Inst.DamageTxt_Stack.ReturnObj(this);
    }
}

데미지 텍스트 이펙트에도 새로운 스크립을 만들어

다시 푸쉬해주겠끔 하였다.