close

Unity C# 傷害字體呈現教學

 

  • 此篇重點

本篇文章重點主要是來實作遊戲中傷害字體的呈現的一個做法,在文章中會提到傷害字體的路徑、淺出、縮放、更色的內容

  • 此篇效果 -  讓遊戲的傷害字體以噴出方式呈現

上圖的字體傷害噴出方式,是很多遊戲都會採取的方式,像是ROLOL、楓之谷等,這次我們就以RO的傷害字體來做個傷害字體的範例吧!

要模仿並實作一個功能,最初就是要去分析這個功能的細部,我們可以看到上圖的傷害字體不外乎就是三個功能,這樣分點之後去實作這功能才會比較容易。

 

  1. 拋物線的移動方式設置
  2. 字體大小、透明度設置
  3. 爆擊字體改變

 

1.2兩點主要是寫在字體物件(Canvas)的Script當中

3則是寫在觸發生成字體的Script,也就是被打的物件身上

 


首先是第一點:拋物線的移動方式設置

這個功能若以最簡單的方式實現,我們可以用之前所提到的iTween去實作

void DamageMoveSetting(){

        moveSetting = new Hashtable();

        //移動時間設為兩秒

        moveSetting.Add("time" , 2.0f);

        //將移動方式設置成逐漸減速

        moveSetting.Add("easetype", iTween.EaseType.easeOutQuart);

 

        //設置三個移動path node為,此部分可依照角色特性微調

        damagePath[0] = new Vector3(transform.position.x, transform.position.y , transform.position.z);

        damagePath[1] = new Vector3(transform.position.x + 2, transform.position.y + 1, transform.position.z + 0.25f);

        damagePath[2] = new Vector3(transform.position.x + 5 , transform.position.y - 5, transform.position.z + 0.5f);

 

        moveSetting.Add("path", damagePath);

 

        //在path結束時移除此字體物件

        moveSetting.Add("oncomplete", "destoryDamageFont");

    }

 

    void destoryDamageFont(){

        Destroy(this.gameObject);

    }

 


 

第二點是字體大小、透明度設置

 GameObject damageFont;

    Text damage;

    Hashtable moveSetting;

    Vector3[] damagePath = new Vector3[3];

    CanvasGroup CGfont;

void Start () {

damageFont = transform.Find("DamageText").gameObject;

CGfont = GetComponent<CanvasGroup>();

 

        DamageMoveSetting();

 

        //設置隨機傷害給Text(75000~105000)

        damage = damageFont.GetComponent<Text>();

        damage.text = Random.Range(75000, 105000).ToString();

 

        iTween.MoveTo(this.gameObject, moveSetting);

 

        StartCoroutine("fadeFont");

    }

 

    IEnumerator fadeFont(){

        while(true){

            //每次延遲0.1秒

            yield return new WaitForSeconds(0.1f);

            //減少透明度15%

            CGfont.alpha -= 0.15f;

            //將大小改變成80%

            transform.localScale = new Vector3(transform.localScale.x * 0.8f , transform.localScale.y * 0.8f, transform.localScale.z * 0.8f);

        }

    }

 


 

第三點是爆擊字體的改變

    GameObject damageCanvas;

    Text damageText;

    int criticalHit;

 

    void Start(){

        damageCanvas = Resources.Load("DamageCanvas", typeof(GameObject)) as GameObject;

    }

 

    // Update is called once per frame

    void Update () {

        if (Input.GetKeyDown(KeyCode.Space)){

            criticalHit = Random.Range(1,10);

            damageText = damageCanvas.transform.Find("DamageText").gameObject.GetComponent<Text>();

//設置1/10機率產生爆擊,將顏色改成紅色並加大字體大小

            if (criticalHit == 1){

                damageText.color = Color.red;

                damageCanvas.transform.localScale = new Vector3(3f, 3f, 3f);

            }

            else{

                damageText.color = Color.white;

                damageCanvas.transform.localScale = new Vector3(1.5f, 1.5f, 1.5f);

            }

            Instantiate(damageCanvas, transform);

        }

    }


這樣就可以讓字體傷害呈現拋出的樣貌了!

 

這整段code可以在此下載,分別是DamageFont.csGenerateFont.cs

 

-------------------------------------------------------------------------------------------------------------------------------------

 

我們有粉絲專頁囉!!!       

如果怕有問題連絡不到我們,歡迎隨時私訊FB粉專哦!!!

https://www.facebook.com/Straying2018/

 

●     如果這篇文章有幫助到您,希望您能留言給予我們鼓勵 !  

●     對於文章有任何的建議,非常歡迎留言告訴我們哦 !!!  

●     有任何想知道的功能也歡迎告訴我們,我們會盡快寫成部落格分享給大家!

arrow
arrow
    全站熱搜

    twilighthook 發表在 痞客邦 留言(0) 人氣()