目錄
前言
素材下載
介紹
官方文檔
不添加拖尾的效果
添加拖尾
代碼控制拖尾生成
拖尾排序問題
效果
修改拖尾高度和存活時間
效果
待機時無拖尾
效果
參考
前言
在游戲開發過程中,我們經常需要為武器添加拖尾特效,效果如下所示
Unity 自帶的拖尾組件雖然能滿足基本需求,但在使用中存在明顯局限性:當目標僅進行移動或轉彎時表現尚可,一旦物體本身發生旋轉,它仍會機械地跟隨 transform.position 更新。為此,我們推薦使用 Pocket RPG Weapon Trails 這款武器拖尾特效插件。該插件的優勢在于通過每幀計算 Mesh Renderer 數據,使特效能夠精確貼合武器運動軌跡。
素材下載
Asset Store地址: The Best Assets for Game Making | Unity Asset Store
介紹
官方文檔
主要變量說明:
- desiredTime:控制拖尾效果的期望持續時間(與time參數直接相關)
- time:記錄拖尾從出現到完全消失的實際持續時間(會不斷向desiredTime趨近)
- timeTransitionSpeed:與time成正比,與fadeTime(漸隱時長)成反比
應用示例: 3D場景中有眾多應用案例,這里不再展開;2D場景可參考《憤怒的小鳥》等游戲的具體實現。
不添加拖尾的效果
添加拖尾
為小鳥添加一個名為"Trail"的子對象,并執行以下配置:
- 附加WeaponTrail.cs腳本
- 添加Mesh Renderer組件
- 使用Pocket RPG Trails資源包中的"WeaponTrail"材質
- 按圖示完成參數設置
代碼控制拖尾生成
新增 TestMyTrail.cs代碼為如下:
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);}}}
}
掛載在小鳥身上
拖尾排序問題
如果你和我一樣,背景和小鳥使用了不同的排序方式,拖尾效果很可能被遮擋。此時可以通過添加 sort group 組件來調整拖尾的渲染順序。
效果
修改拖尾高度和存活時間
效果
待機時無拖尾
我們需要確保在待機狀態下不出現拖尾效果。為此,需更精確地控制拖尾的顯示與隱藏。請修改TestMyTrail.cs代碼,使其在小鳥發射時調用heroAttack方法來顯示拖尾效果。
void Start()
{// 默認沒有拖尾效果myTrail.SetTime(0.0f, 0.0f, 1.0f);
}//顯示拖尾
public void heroAttack()
{//設置拖尾時長myTrail.SetTime( 2.0f, 0.0f, 1.0f);//開始進行拖尾myTrail.StartTrail( 0.5f, 0.4f);
}//隱藏拖尾public void heroIdle()
{//清除拖尾myTrail.ClearTrail();
}
效果
參考
Unity3D武器拖尾效果-CSDN博客
Unity插件篇:Pocket RPG Weapon Trails(武器拖尾特效)部分解讀以及基本用法_unity刀光拖尾插件-CSDN博客