Unity外掛篇:Pocket RPG Weapon Trails(武器拖尾特效)部分解讀以及基本用法
阿新 • • 發佈:2018-12-11
我們平時開發遊戲,有時會想要實現武器拖影特效,就像這樣。
這個雙刀流的小老頭已經很全面的詮釋了什麼是武器拖尾。其實Unity自帶了拖尾元件
但他有很大的侷限性,當目標僅進行移動,轉彎的時候,它是可以勝任的,但是,當物體本身發生旋轉的時候,他還是會像之前那樣,只是單純的跟隨transform.position進行更新。下面是個例子。
****************************************************************************************************************************************
我們讓物體自轉(繞Z軸)
但是我們會發現,雖然物體一直在自轉,但是他的拖尾並沒有跟著轉,這並不是我們想要的,所以PASS。
如果真有小夥伴需要這種簡單的拖尾,那就去百度學習一下這個元件,很簡單。
****************************************************************************************************************************************
下面是我們今天的主角。Pocket RPG Weapon Trails。下面給出下載連結。
首先介紹一下Pocket RPG Weapon Trails這個外掛,它的原理是每幀計算Mesh Renderer來更精確讓特效貼合武器。
我們先來看一下他的文件。
大致是這個意思。
先看WeaponTrail
其中有幾個重要的方法,在開始說這幾個方法之前,先說明一下里面幾個重要變數。
1.desiredTime:表示想要讓拖尾持續的時間(與time密切相關)
2.time:表示拖尾從開始出現到完全消失所用的時間(總是在向desiredTime靠近)
3.timeTransitionSpeed:與time成正比,與fadeTime(在幾秒內漸隱)成反比
在每幀的更新裡有這樣一段程式碼
下面是方法:
1.StartTrail啟用拖尾特效,並將一直處於啟用狀態。如果timeToTweenTo不等於desirdTime(預設值為2),time將一直向desiredTime靠近,靠近速度取決於timeTransitionSpeed。
2.SetTime設定拖尾特效的總持續時間。(一般的我們使用這個方法控制拖尾特效的持續時間,所以我們一般把第二個引數設為0,但是還是看個人需求來),它將以tweenSpeed的速度靠近_deriredTime的值。
3.去除拖尾特效。
我個人感覺以上第一個和第二個方法可以靈活的選擇使用。
然後是實現方法,有兩種方法
第一種是不使用AnimatorController
using UnityEngine;
using System.Collections;
public class TestMyTrail : MonoBehaviour {
public WeaponTrail myTrail;
private float t = 0.033f;
private float tempT = 0;
private float animationIncrement = 0.003f;
void LateUpdate()
{
t = Mathf.Clamp(Time.deltaTime, 0, 0.066f);
if (t > 0)
{
while (tempT < t)
{
tempT += animationIncrement;
if (myTrail.time > 0)
{
myTrail.Itterate(Time.time - t + tempT);
}
else
{
myTrail.ClearTrail();
}
}
tempT -= t;
if (myTrail.time > 0)
{
myTrail.UpdateTrail(Time.time, t);
}
}
}
}
第二種使用AnimatorController
讓我們最後看看效果,這樣就實現了武器的拖尾效果。