2.5 随从受伤溅血效果的实现———自制卡牌游戏之旅
生活随笔
收集整理的這篇文章主要介紹了
2.5 随从受伤溅血效果的实现———自制卡牌游戏之旅
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 一、實現效果
- 二、具體實現
- 1. 對象創建
- 2. 編寫代碼
- DamageEffect.cs
- ① 從預制體生成
- ② 漸隱效果協程
- ③ 差分的特效圖片
- DamageEffectTest.cs
- 三、完整代碼
內容簡介:本篇主要介紹受傷濺血效果
一、實現效果
當隨從或玩家收到傷害時,會產生一個標有傷害數值的濺血特效出現。
并且顯示之后會有一個漸隱退場的效果。
二、具體實現
1. 對象創建
對象主要分為兩部分:濺血特效圖片和數值
Splash:特效圖片
Text:數值
2. 編寫代碼
分析
DamageEffect.cs
① 從預制體生成
public static void CreateDamageEffect(Vector3 position, int amount){// 生成DamageEffect預制體GameObject newDamageEffect = new GameObject();// TODO GameObject newDamageEffect = GameObject.Instantiate(GlobalSettings.Instance.DamageEffectPrefab, position, Quaternion.identity) as GameObject;newDamageEffect = GameObject.Instantiate(DamageEffectTest.Instance.DamagePrefab, position, Quaternion.identity) as GameObject;// 獲取組件DamageEffect de = newDamageEffect.GetComponent<DamageEffect>();// 更改文字de.AmountText.text = "-"+amount.ToString();// 開始協程de.StartCoroutine(de.ShowDamageEffect());}② 漸隱效果協程
通過更改alpha值,來達到漸隱效果
// 控制漸隱效果的協程private IEnumerator ShowDamageEffect(){// 不透明cg.alpha = 1f;// 等待一秒鐘yield return new WaitForSeconds(1f);// 更改alpha值while (cg.alpha > 0){cg.alpha -= 0.05f;yield return new WaitForSeconds(0.05f);}// 銷毀該效果Destroy(this.gameObject);}③ 差分的特效圖片
為了增加視覺效果,可以讓每次效果的特效圖片都不一樣。
void Awake(){// 選擇一個隨機傷害圖片DamageImage.sprite = Splashes[Random.Range(0, Splashes.Length)]; }
Splash為存放差分圖片的數組,每次生成預制體后從數組中隨機挑選生成。
DamageEffectTest.cs
用來臨時測試效果
using UnityEngine; using System.Collections;public class DamageEffectTest : MonoBehaviour {public GameObject DamagePrefab;public static DamageEffectTest Instance;void Awake(){Instance = this;}void Update(){if (Input.GetKeyDown(KeyCode.A))// 調用靜態方法DamageEffect.CreateDamageEffect(transform.position, Random.Range(1, 7));} }三、完整代碼
DamageEffect.cs
using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI; using DG.Tweening;public class DamageEffect : MonoBehaviour {// 不同濺血效果的數組public Sprite[] Splashes;public Image DamageImage;// 用于調整alpha值,來實現漸隱效果public CanvasGroup cg;// 顯示傷害數字,比如: "-2"public Text AmountText;void Awake(){// 選擇一個隨機傷害圖片DamageImage.sprite = Splashes[Random.Range(0, Splashes.Length)]; }// 控制漸隱效果的協程private IEnumerator ShowDamageEffect(){// 不透明cg.alpha = 1f;// 等待一秒鐘yield return new WaitForSeconds(1f);// 更改alpha值while (cg.alpha > 0){cg.alpha -= 0.05f;yield return new WaitForSeconds(0.05f);}// 銷毀該效果Destroy(this.gameObject);}// 靜態方法public static void CreateDamageEffect(Vector3 position, int amount){// 生成DamageEffect預制體GameObject newDamageEffect = new GameObject();// TODO GameObject newDamageEffect = GameObject.Instantiate(GlobalSettings.Instance.DamageEffectPrefab, position, Quaternion.identity) as GameObject;newDamageEffect = GameObject.Instantiate(DamageEffectTest.Instance.DamagePrefab, position, Quaternion.identity) as GameObject;// 獲取組件DamageEffect de = newDamageEffect.GetComponent<DamageEffect>();// 更改文字de.AmountText.text = "-"+amount.ToString();// 開始協程de.StartCoroutine(de.ShowDamageEffect());} }總結
以上是生活随笔為你收集整理的2.5 随从受伤溅血效果的实现———自制卡牌游戏之旅的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 将数据以表格的形式保存到pdf中
- 下一篇: JavaScript头像上传器的实现