Unity C# 傷害字體呈現教學
- 此篇重點
本篇文章重點主要是來實作遊戲中傷害字體的呈現的一個做法,在文章中會提到傷害字體的路徑、淺出、縮放、更色的內容
- 此篇效果 - 讓遊戲的傷害字體以噴出方式呈現
上圖的字體傷害噴出方式,是很多遊戲都會採取的方式,像是RO、LOL、楓之谷…等,這次我們就以RO的傷害字體來做個傷害字體的範例吧!
要模仿並實作一個功能,最初就是要去分析這個功能的細部,我們可以看到上圖的傷害字體不外乎就是三個功能,這樣分點之後去實作這功能才會比較容易。
- 拋物線的移動方式設置
- 字體大小、透明度設置
- 爆擊字體改變
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.cs和GenerateFont.cs
-------------------------------------------------------------------------------------------------------------------------------------
我們有粉絲專頁囉!!!
如果怕有問題連絡不到我們,歡迎隨時私訊FB粉專哦!!!
https://www.facebook.com/Straying2018/
● 如果這篇文章有幫助到您,希望您能留言給予我們鼓勵 !
● 對於文章有任何的建議,非常歡迎留言告訴我們哦 !!!
● 有任何想知道的功能也歡迎告訴我們,我們會盡快寫成部落格分享給大家!