[我花2個月做了敘事短篇游戲]我是如何實現(xiàn)劇情演出的(上)

作者:陳虹松
前言
這兩周陷入秘之困境,沒有目標(biāo)感,知道有很多的問題,但是卻沒有足夠的精力去修復(fù)它,感覺東西已經(jīng)做好了,但是覺得實際上要真正的做完還需要很多時間。
簡而言之,心態(tài)崩了。
經(jīng)朋友一起吃飯?zhí)嵝?,感覺像是陷入游戲制作的抑郁期,于是這段時間就放飛自我,完全沒有再去思考接下來要怎么樣。
但是"債"還是要還的,債,即人的責(zé)任。沒有完成責(zé)任,那就會累計起來債。所以還是提起精力繼續(xù)寫點什么內(nèi)容產(chǎn)出出來。
另外碎碎念,國內(nèi)的環(huán)境發(fā)布游戲不能允許任何地府、鬼(牛頭、孟婆……)這類的東西。作為想"弘揚民族文化"的我來說的確是個打擊,難道只能存在西方的天使惡魔,地獄和天堂,只能有日本的八百萬神明,而不能有我們在自己的傳統(tǒng)上的二次創(chuàng)作呢(可能是因為劇本內(nèi)容發(fā)生在現(xiàn)代有關(guān)吧,(笑,后面再找個機(jī)會優(yōu)化下這個設(shè)定好了)。
回到正題,這一次的內(nèi)容主要為給大家了解Unity內(nèi)實現(xiàn)劇情演出是如何完成的,以及我們?nèi)绾稳ネ卣筎imeline它的功能(這個將放在下一章)。
劇情演出
個人認(rèn)為,有劇情演出的劇情游戲,比單純的立繪背景加文字的游戲的表達(dá)效果高很多。例如《去月球》,雖然畫質(zhì)本身以及場景并不是給人一種視覺沖擊的體驗,但是就像小說和舞臺劇的差異,有了舞臺,敘事性和演出效果就會大非常的多。
創(chuàng)建舞臺場景
首先是舞臺場景的創(chuàng)建。舞臺場景本身的創(chuàng)建很簡單,只需要把要講述的故事的資源放進(jìn)場景就好了。

創(chuàng)建Timeline資源
然后是讓場景內(nèi)的元素能夠被控制。大家不知道接觸過Unity的動畫系統(tǒng)沒有,它可以很方面的創(chuàng)建一個剪輯,然后在一個時間軸上去記錄動畫節(jié)點下面所有物體的可控制屬性。而Timeline本質(zhì)是一個線性控制Unity屬性的一個“動畫”系統(tǒng)。
右鍵創(chuàng)建資源后,將其資源綁定在場景的Timeline節(jié)點上。

Timeline節(jié)點肯定是要在所有控制對象的共同父節(jié)點上。

然后就是實現(xiàn)控制,這里有些部分我直接引用原先文章里面的內(nèi)容(因為這么久了,Unity對這塊的用法是沒有修改的,所以學(xué)功能主要是學(xué)用法呀)。
動畫控制
右鍵Timeline窗口或者直接將要控制動畫的對象拖入Timeline窗口,

我這里以控制Mask上Render的Color為例,實現(xiàn)白屏后顯示場景的效果。操作很簡單,勾選動畫軌道的錄制按鈕,對控制對象上的屬性直接修改,Timeline的動畫軌道會記錄下該值,再另外的時間幀中記錄新的值,關(guān)閉錄制,完成一段簡單的動畫。

激活軌道
對目標(biāo)對象進(jìn)行GameObject的開關(guān)操作,使用ActivationTrack。

在Active的Clip覆蓋的時間段內(nèi)目標(biāo)對象激活,范圍外的地方,目標(biāo)對象異常。效果如下:

特效控制
TimeLine是用Control Track控制軌道來實現(xiàn)的。

給軌道添加一個Clip來控制資源


Control主要屬性意義:
Source Game Object:用做選擇場景內(nèi)的物體,選擇的物體將會在TimeLine運行到該Clips時激活。(如果直接用物體激活來做,不能在編輯模式下看到粒子的變化)
Prefab:選擇項目的預(yù)制體資源,如果選擇好預(yù)制體后,Source Game Object會修改為Parent Object,代表生成的預(yù)制體將會放在哪個場景物體下。

加入的特效可以來回拖動看實際效果

以上,最基礎(chǔ)又常用的軌道已經(jīng)介紹完了,基礎(chǔ)的如Audio Track顧名思義,設(shè)置音效的播放就不列出來了。下面將主要開始重點講Signal Track和Playable Track。
信號軌道
這個功能主要像游戲內(nèi)的事件一樣的,Timeline通過該信號功能,將Timeline目前發(fā)生的重要步驟廣播出去。
以目前游戲中暫停演出功能為例,我需要在文字出現(xiàn)的時候暫停Timeline的演出,等到玩家讀取完該段對話后,繼續(xù)進(jìn)行Timeline,如果沒有信號功能。我只能做很多段的Timeline進(jìn)行拼接這無疑是一個噩夢。
點擊Marker按鈕,顯示信號發(fā)射器,右鍵點擊后添加信號發(fā)射器。

目前我這里只創(chuàng)建了一種類型的發(fā)射器,即是暫停播放。

值得一說,不同的信號發(fā)射器是不同的資源,你只需要創(chuàng)建出來后,命不同的名字就好了。

目前還需要發(fā)射出來的信號有功能接受后處理事情。SignalReceiver接受Timeline中發(fā)射出來的信號,然后調(diào)用具體的事件。

一旦你在場景中有SignalReceiver組件后,你的發(fā)射器會自動去匹配接收器當(dāng)然接收器可以不止一個,可以點擊+號繼續(xù)添加。

我為了方便直接把調(diào)用的函數(shù)功能放在了TimeLineReceiver中,讓SignalReceiver接受到后直接調(diào)用。

于是信號發(fā)生、接受、處理這三個步驟就全部打通了。當(dāng)Timeline播放到事件發(fā)生的位置點時,觸發(fā)暫停功能。我在之前的編輯器里面加入了一個節(jié)點,檢測到暫停事件后觸發(fā)對話。這樣實現(xiàn)了演出+對話+演出的功能。

后續(xù)
接下來是功能最強(qiáng)大也是Timeline重中之重的Playable Track軌道,可以支持自定義功能比如我要在演出中穿插對話,以及我要實現(xiàn)時間縮放,實現(xiàn)調(diào)用幀動畫的功能,等等。
雖然很早之前Timeline剛出的時候就有寫過基本的Timeline用法,但是自定義軌道這部分unity的用法優(yōu)化了很多,因此放在下一節(jié)了。
以下是最開始寫的文章如果是看Timeline功能擴(kuò)展的話,也是非常有用的。
【Unity】TimeLine&Cinemachine系列教程——動作特寫!
【Unity】TimeLine&Cinemachine系列教程——動態(tài)賦值,我要打十個!
另外雖然這里主要用Timeline介紹劇情去了,但是其功能不止這么簡單。還是可以制作像:技能編輯器,界面動畫管理工具這樣的擴(kuò)展工具。因為編程的思想是相同的,工具的選用主要是了解他能做什么,Excel不也能繪圖的么?