1. 程式人生 > >Unity外掛篇:Pocket RPG Weapon Trails(武器拖尾特效)部分解讀以及基本用法

Unity外掛篇:Pocket RPG Weapon Trails(武器拖尾特效)部分解讀以及基本用法

我們平時開發遊戲,有時會想要實現武器拖影特效,就像這樣。

這個雙刀流的小老頭已經很全面的詮釋了什麼是武器拖尾。其實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

讓我們最後看看效果,這樣就實現了武器的拖尾效果。

總結:其實外掛的學習,首先是要看外掛的程式碼,外掛的官方案例已經非常細膩,能夠學到很多東西。然後才是別人的部落格,這樣提升會很快。祝大家天天進步!