游戲中,經常會有這樣的需求,即播放一段電影,給玩家更好的體驗。比如攝像機朝向某兩個NPC,兩個NPC在那里交談之類的。
在用Unity3D制作游戲的過程中,也經常會遇到這樣的需求,所以在此花時間搭建了一個簡單的電影模式框架,目的在於較方便的構建游戲中需要的電影模式需求。
此框架的構想是這樣的:電影由一個個關鍵幀組成,每個關鍵幀代表一種電影模式功能,如攝像機的動畫,角色的動畫等等。此框架中提供了簡單的攝像機關鍵幀。我們在Unity3D中完成所有關鍵幀的編輯,並且存為電影文件,然后在游戲中就可以直接讀取文件進行播放了。下面就簡單的介紹一下。
首先打開編輯器,從Movie菜單中選擇Create:

隨后在Hierarchy中便會出現所創建的Movie對象,並且在此對象上添加了Movie腳本組件:

該腳本有一個Total Time變量和一個Save按鈕,Save按鈕就是用來保存電影文件的,稍后會說。Total Time就是需要指定的電影的總時長,單位為秒,該變量是用來控制電影的播放結束的。
隨后我們就可以添加各種關鍵幀,此框架中提供了攝像機關鍵幀,我們就來添加一個攝像機關鍵幀。首先在場景中創建一個對象,該對象是用來添加關鍵幀的:

接着選中剛創建的對象,從Movie菜單中選擇Add Key Frame -> Camera:

此時選中的對象中就會包含CameraKeyFrame腳本組件:

CameraKeyFrame腳本組件的可編輯功能如下:
Start Time是每個關鍵幀都會有的數據,指定該關鍵幀開始執行的時間,單位為秒。
Signature用於標識該關鍵幀將控制的場景中的對象,當勾選Is Tag時,表示的是給予將控制的場景中的對象的標簽,而沒有勾選Is Tag時,表示的是將控制的場景中的對象的名稱。
Is Draw Path表示是否需要繪制關鍵中包含的路徑點
Path Point Size表示繪制的路徑點的大小
Editor按鈕也是每個關鍵幀都會有的,用來打開關鍵幀編輯窗口
AddPathPointInfo按鈕用於添加路徑點信息
首先我們要做的就是設置Signature變量,由於我打算控制場景中的MainCamera,所以我設置如下:


然后就可以使用AddPathPointInfo按鈕來添加路徑點信息了,添加路徑點信息實際的工作步驟是這樣的:
首先會根據Signature和Is Tag變量來查找相應的GameObject,然后就讀取該GameObject的localPosition和localRotation作為路徑點信息,這里我們直接添加2個路徑點信息。添加完路徑點信息后,可以通過Editor按鈕打開編輯窗口進行查看和修改:

可以發現,記錄的就是指定的GameObject的信息。
這里還有一個Time變量,用於指定變換到該路徑點所需的時間,單位為秒。
這里我們為了看效果,把第二個路徑點信息修改下:
它代表的含義是當電影開始播放時,當此關鍵幀執行之后,將消耗0秒從指定的GameObject的位置變換到(0, 0, -3.48),接着將消耗5秒從(0, 0, -3.48)變換到(3.37, 0, -3.48)。旋轉量沒變化。
由於我們的攝像機關鍵幀的Start Time為0,也就是當電影一播放就將執行,而我們的攝像機關鍵幀的數據執行需要消耗5秒,所以電影總時間我們設定為6秒:

然后我們就可以保存我們編輯完的電影了,選擇剛剛創建的Movie對象,有一個Start按鈕,點擊后,選擇保存路徑文件就可以了:

接着我們可以選擇看效果,首先必須進入運行模式,接着就可以單擊Movie菜單中的Play項,此時會需要選取要播放的電影文件,選中文件后就可以看效果啦^-^,我們會發現指定的GameObject對象發生了我們先前說明的操作:

除了播放之外,我們也可以載入電影文件進行編輯,選擇Movie菜單中的Load項,打開需要編輯的電影文件即可:

我們選擇剛才保存的文件,就可以看到所有剛才完成的數據了,就可以在此基礎上繼續編輯修改:

好了,框架以及攝像機關鍵幀的使用就是這樣,可能解釋的並不是很清楚,大家有問題可以提問,我會及時回答的,由於初學Unity3D,此框架的功能和方便性可能不是很好,大家看看就好,有興趣的朋友可以去下載源代碼查看^-^:http://115.com/file/anju9qse#MovieEditor.rar
Happy Coding!
