Unity 武器拖尾效果
阿新 • • 發佈:2019-01-04
cti any 時間 只需要 由於 插件 new rate public
Pocket RPG Weapon Trails 武器拖尾效果
Asset Store地址:https://www.assetstore.unity3d.com/en/#!/content/2458
CSDN資源地址:http://download.csdn.net/detail/akof1314/7610241 截圖:
由於這個插件提供的AnimationController.cs僅對Animation動畫進行支持,對Animator動畫支持的話需要自己實現。文檔上說明實現的方式:
CSDN資源地址:http://download.csdn.net/detail/akof1314/7610385
首先,在Animator 窗口,創建休閑idle狀態和攻擊attack狀態,設置它們相應的Motion,設置從idle到attack的動畫參數為Attack,類型為Trigger,如下圖所示:
Speed屬性可以控制當前狀態動作的速度。接著,創建個腳本TestMyTrail.cs附加到角色上,腳本代碼如下:
運行,可以看到默認角色是休閑狀態,點擊按鈕是攻擊狀態,如下圖所示:
查看模型,可以看到武器是綁在右手上的,如下圖所示:
給武器(Object003)添加一個子對象,命名為Trail,為其添加WeaponTrail.cs腳本、Mesh Renderer組件,材質為Pocket RPG Trails提供的材質,設置好如下圖所示:
修改TestMyTrail.cs代碼為如下:
將Trail對象賦給My Trail屬性,如下圖所示:
現在運行,可以看到休閑狀態時,武器拖尾的若隱若現,如下圖所示:
攻擊時的效果:
要調整好Trail對象的位置、旋轉等,盡量貼合武器,設置拖尾的高度,盡量與武器同長度,才能產生較好的效果。當攻擊結束,武器往回收的時候,也會有拖尾,如下圖所示:
如果要去掉這個時候的拖尾,可以采用更精確的控制拖尾的出現。選中攻擊動作,切換到"Animations",播放動作,在攻擊開始時刻,添加一個事件,如下圖所示:
在攻擊完畢,也添加一個事件,如下圖所示:
點擊"Apply"進行應用。修改TestMyTrail.cs代碼為如下:
現在運行,就會發現休閑狀態時候,不會有拖尾效果,當進行攻擊時,拖尾只在相應的時間點進行出現,如下圖所示:
武器回收的時候,也不會有拖尾了,如下圖所示:
參考資料:
1.Unity3D 武器拖尾效果(刀光) 使用PocketRPG Trails http://blog.csdn.net/xv_ly15/article/details/8509781
2.Unity3D研究院之揮動武器產生的劍痕特效(四十七) http://www.xuanyusong.com/archives/2110
CSDN資源地址:http://download.csdn.net/detail/akof1314/7610241 截圖:
由於這個插件提供的AnimationController.cs僅對Animation動畫進行支持,對Animator動畫支持的話需要自己實現。文檔上說明實現的方式:
- The WeaponTrail can be built by calling Itterate(float itterateTime)
CSDN資源地址:http://download.csdn.net/detail/akof1314/7610385
首先,在Animator
Speed屬性可以控制當前狀態動作的速度。接著,創建個腳本TestMyTrail.cs附加到角色上,腳本代碼如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using UnityEngine; using System.Collections; public class TestMyTrail : MonoBehaviour { private Animator animator; void animator = GetComponent<Animator>(); } void OnGUI() { if (GUI.Button(new Rect(0, 0, 50, 50), "攻擊")) { animator.SetTrigger("Attack"); } } } |
查看模型,可以看到武器是綁在右手上的,如下圖所示:
給武器(Object003)添加一個子對象,命名為Trail,為其添加WeaponTrail.cs腳本、Mesh Renderer組件,材質為Pocket RPG Trails提供的材質,設置好如下圖所示:
修改TestMyTrail.cs代碼為如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
using UnityEngine; using System.Collections; public class TestMyTrail : MonoBehaviour { public WeaponTrail myTrail; private Animator animator; private float t = 0.033f; private float tempT = 0; private float animationIncrement = 0.003f; void Start () { animator = GetComponent<Animator>(); } 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); } } } void OnGUI() { if (GUI.Button(new Rect(0, 0, 50, 50), "攻擊")) { animator.SetTrigger("Attack"); } } } |
現在運行,可以看到休閑狀態時,武器拖尾的若隱若現,如下圖所示:
攻擊時的效果:
要調整好Trail對象的位置、旋轉等,盡量貼合武器,設置拖尾的高度,盡量與武器同長度,才能產生較好的效果。當攻擊結束,武器往回收的時候,也會有拖尾,如下圖所示:
如果要去掉這個時候的拖尾,可以采用更精確的控制拖尾的出現。選中攻擊動作,切換到"Animations",播放動作,在攻擊開始時刻,添加一個事件,如下圖所示:
在攻擊完畢,也添加一個事件,如下圖所示:
點擊"Apply"進行應用。修改TestMyTrail.cs代碼為如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
void Start () { animator = GetComponent<Animator>(); // 默認沒有拖尾效果 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(); } |
武器回收的時候,也不會有拖尾了,如下圖所示:
參考資料:
1.Unity3D 武器拖尾效果(刀光) 使用PocketRPG Trails http://blog.csdn.net/xv_ly15/article/details/8509781
2.Unity3D研究院之揮動武器產生的劍痕特效(四十七) http://www.xuanyusong.com/archives/2110
再分享一下我老師大神的人工智能教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智能的隊伍中來!https://www.cnblogs.com/captainbed
Unity 武器拖尾效果