大家好,我是秦元培,歡迎大家關注我的博客,我的博客地址是blog.csdn.net/qinyuanpei。
我實在不明確有的人為什么不喜歡武俠/仙俠類游戲,也許是因為武俠/仙俠類游戲身上被永遠烙上的國產標簽吧!博主近期在玩一部叫做《雨血》的游戲,博主不禁感慨:在這樣一個流星蝴蝶不再閃爍、網游成風、國產雙劍興許創新不足的后國產時代,竟然還能夠有這樣一部再次讓博主熱血沸騰的游戲。博主最早接觸過的游戲是《流星蝴蝶劍》,因為這部游戲的上手難度本身非常高,所以博主基本上沒有通關過,如今偶爾拿出來一個人懷念一下。據說《雨血》系列堪稱第一部走出國門的國產RPG,博主一直有一個夢想,就是有一天我們能夠用RPG來演繹中國古代最為絢麗奪目的文學經典《西游記》。博主是一個相對傳統的人,喜歡中國的傳統文化,所以對於國外的文化找不到一種歸屬感,我實在沒有認為國外游戲中的魔法會比中國的仙術、武功、五行、暗器、蠱術來得簡單。假設說仙劍、古劍是仙俠背景下的武俠,軒轅劍是歷史背景下的武俠,那么《血雨》就是古龍武俠風格下的武俠。博主非常喜歡這種畫風,因為每個畫面都讓人認為這是在贊賞一件藝術品,我們來看幾張圖片吧:
能夠看到,在這部游戲中,前兩部是半即時制RPG,第三部則全然是即時制RPG。博主尤其喜歡這部游戲的配樂,整個配樂大氣磅礴,一招一式都有不錯的打擊感,並且武器的特效十分華麗。那么,到這里,就到了我們今天的主題:刀光劍影特效的制作。我們今天選擇的PacketRPG插件,這個插件能夠幫助我們高速地實現武器拖尾特效。好,以下我們開始:
首先我們打開Unity3D、導入PocketRPG Trails。使用這個插件,我們首先要做的是須要和美工交流,以獲得模型中武器的確切位置。假設不知道武器的確切位置,建議大家還是和博主一樣使用這個插件自帶的模型吧。好,首先我們在項目中找到這個模型:
以下我們將模型拖到場景中,展開模型,發現以下的結構:
我們展開到left_hand_joint這是左手的關節,能夠發現它的以下有兩個節點,第一個是手指,第二個我們將其改名為Left_Weapon,這就是我們左手武器的位置,我們在它的以下創建一個LeftWeaponTrail,這是用來顯示我們特效的組件,我們為其加入WeaponTrail腳本:
完畢該腳本的加入后,我們為其加入Mesh Renderer,選擇特效材質,這里我們選擇PocketRPG提供的默認材質:
相同地,對於右手,我們採取相同的方法找到節點,為其加入特效組件,這里命名為RightWeaponTrail。接下來,我們將模型結構臨時合並到一起,我們選中真個模型,為其加入AnimationController腳本,這是PocketRPG提供的用於控制模型動畫的一個腳本。好了,做好前面的基礎后,我們來編寫腳本,控制我們的角色:
using UnityEngine; using System.Collections; public class ChangeAnim : MonoBehaviour { //定義左手WeaponTrail public WeaponTrail mWeapTrailL; //定義右手WeaponTrail public WeaponTrail mWeapTrailR; //定義攻擊招式1 private AnimationState State_Attack1; //定義攻擊招式2 private AnimationState State_Attack2; //定義攻擊招式3 private AnimationState State_Attack3; //定義攻擊招式4 private AnimationState State_Attack4; //定義等待狀態 private AnimationState State_Wait; //動畫控制器 private AnimationController mController; void Start () { //獲取動畫控制器 mController=gameObject.GetComponent<AnimationController>(); //為每個招式設定相應的動畫 State_Attack1=animation["Attack1"]; State_Attack2=animation["Attack2"]; State_Attack3=animation["Whirlwind"]; State_Attack4=animation["WhirlwindAttack"]; State_Wait=animation["Idle"]; //為動畫控制器加入武器拖尾腳本 mController.AddTrail(mWeapTrailL); mController.AddTrail(mWeapTrailR); //設置拖尾效果 mWeapTrailL.SetTime (3.0f, 0, 1);//設置拖尾時間為3秒 mWeapTrailR.SetTime (3.0f, 0, 1);//設置拖尾時間為3秒 } void OnGUI() { if(GUILayout.Button("翔龍斬",GUILayout.Height(30))) { mController.PlayAnimation(State_Attack1); StartCoroutine("ReSetToWait"); } if(GUILayout.Button("裂穹擊",GUILayout.Height(30))) { mController.PlayAnimation(State_Attack2); StartCoroutine("ReSetToWait"); } if(GUILayout.Button("天罡伏魔",GUILayout.Height(30))) { mController.PlayAnimation(State_Attack3); StartCoroutine("ReSetToWait"); } if(GUILayout.Button("亂劍懸月",GUILayout.Height(30))) { mController.PlayAnimation(State_Attack4); StartCoroutine("ReSetToWait"); } } //0.5秒后恢復到等待狀態 IEnumerator ReSetToWait() { yield return new WaitForSeconds(0.5F); mController.PlayAnimation(State_Wait); } }
這里須要注意以幾點:
1、使用PacketRPG時,模型動畫將不受模型自帶的Animation組件的控制,我們須要使用Animation Controller來控制模型動畫。詳細方法是PlayAnimation(AnimtaionState mState)
2、在PacketRPG中,通過SetTime()方法來設置武器拖尾的時間,通過StartTrail()和FadeOut()來實現特效的漸入漸出效果。當然,我們能夠通過WeaponTrain腳本來設置,詳細參數的意義大家能夠查閱文檔。
3、該腳本中的兩個WeapTrail對象分別指向我們實現定義好的LeftWeaponTrail、RightWeaponTrail。
好了,我們來看看終於的效果吧:
技能一:翔龍斬
技能二:裂穹擊
技能三:亂劍懸月
好了,這就是今天的博客了,希望對大家實用、希望大家喜歡!
每日箴言:有兩樣東西,愈是常常和持久地思考它們,對它們日久彌新和不斷增長之魅力以及崇敬之情就愈加充實着心靈:我頭頂的星空,和我心中的道德法則——康德
喜歡我的博客請記住我的名字:秦元培,我的博客地址是:blog.csdn.net/qinyuanpei
轉載請注明出處,本文作者:秦元培,本文出處:http://blog.csdn.net/qinyuanpei/article/details/24388765