FloatingText 


데미지값 출력해주기!




1) 프리팹제작

Canvas안에 UI -> Text로 만들어준다.


2) FloatingText 스크립트(프리팹에 추가할 스크립트)

    public void print(string Text)

    {

        FloatTextPrint.text =  string.Format(" {0}",Text);


}

private void Start()

{

moveSpeed = 5f; //위로 움직이는 속도값

destroyTime = 3f; //몇초 후 삭제 될건지

}

void Update()

        {

vector.Set(FloatTextPrint.transform.position.x, FloatTextPrint.transform.position.y 

             + (moveSpeed + Time.deltaTime), FloatTextPrint.transform.position.z);


FloatTextPrint.transform.position = vector;


destroyTime -= Time.deltaTime;


if(destroyTime <=0)

{  

Destroy(this.gameObject);

}


}

 vector.Set(FloatTextPrint.transform.position.x, FloatTextPrint.transform.position.y 

             + (moveSpeed + Time.deltaTime), FloatTextPrint.transform.position.z);

생성된 FloatTextPrint 위치를 Y값으로 증가 시킨다.



3) UI.Mgr 스크립트

public void SetFloating(GameObject vr, string bulletpower) //몬스터의 위치, 총알의 공격력을 받아옴

{

  

PrefabFloatingTXT = Resources.Load<GameObject>("prefab/FloatingTxt");

if(PrefabFloatingTXT == null)

{

Debug.Log("FloatingTxt Null");

}

                GameObject TXT = Instantiate(PrefabFloatingTXT);


Vector3 uiPosition = Camera.main.WorldToScreenPoint(vr.transform.position);


    TXT.transform.localPosition = uiPosition;

            TXT.transform.SetParent(canvas.gameObject.transform);

            Ftxt = TXT.gameObject.transform.GetComponent<FloatingText>();

    Ftxt.print(bulletpower);


}

Vector3 uiPosition = Camera.main.WorldToScreenPoint(vr.transform.position);

UI 오브젝트 이기 때문에 몬스터의 position값을 넣어도 화면에 보이지 않는다. 

Camer.main.WorldToScreenPoint를 월드좌표에서 스크린좌표로 값을 변환해준다.


+ Recent posts