相關閱讀 |
>>> 創業先鋒 眾人拾柴火焰高 >>> | 簡體 傳統 |
作者:ManiaHero
過渡動畫指的是,當游戲中的某個東西(可能是UI控件,也可能是游戲世界中的物體)從一個狀態變化為另一個狀態時,是需要過渡的,比如一個人從靜止到跑動,需要一個邁出步子的動畫,才能順利地從走的狀態過渡到跑的狀態;或者比如一個按鈕,從一般狀態到被點下,如果這是一個需要做的十分華麗的按鈕,按鈕也會有一個從一般狀態到被點下過渡的動畫。理論上來說,一個制作精良的寫實風格的游戲,絕大多數狀態的遷移都是需要過渡的,只有某些不需要過渡的地方才會特殊處理,狀態過渡應該是一個常態,因為這符合玩家對世界的認知,能夠讓物體看起來很真實。
然而,這個過程的加入卻使得狀態遷移變的更為復雜。比如說,玩家控制他的角色從靜止開始跑動,這時人物開始播放“邁出步子”的過渡動畫,而在這時玩家如果命令角色停止移動,角色的動畫應該如何處理?本文就是來討論幾種常見的處理狀態過渡切換的方式的。
過渡動畫本身是否應該當做一個狀態處理,要和程序員進行商量,一同進行設計。
1、有始有終
有始有終的處理方式就是,一旦開始進入過渡動畫,任何事情都無法阻止這個物體完成其狀態的過渡,這個物體不接受玩家下達的任何指令,或者玩家下達的指令等到過渡動畫完成后才會被執行。
游戲中場景的切換經常會用到這種方式,比如玩家從一個全屏窗口進入到了另外一個全屏窗口,新的全屏窗口在播放登場的過渡動畫時候,窗體內的所有控件都不會響應玩家的操作,直到過渡動畫播放完成。《爐石傳說》中從主菜單進入任何一個模式采用的就是這種做法,即便玩家能眼疾手快地在模式彈出動畫尚未完成前就點擊到由于過渡動畫而運動中的按鈕,按鈕也不會響應玩家的操作。玩家把鼠標懸停在法力水晶上時,水晶會亮起,移開時水晶會變暗,這兩個狀態過渡也是這一種類型的,不會由于玩家頻繁地將鼠標移入移出而亂閃。由于法力水晶是無法進行交互的對象,因此這種處理方式也沒有問題。
格斗游戲中人物的狀態遷移也會給人以有始有終的感覺,即玩家一旦執行了某個動作,在這個動作執行完畢或被打斷之前,角色處于失控狀態,不會接受玩家下達的任何指令。不過這種做法不適合絕大多數游戲中的角色狀態遷移,因為這會讓角色變得相當難以操作。
2、有來有回
當物體由狀態A遷移至狀態B,在播放過渡動畫時,又要從狀態B遷移回狀態A,有一種很適合的做法是直接停止當前過渡動畫,并且反向播放,倒退回狀態A。它保證了物體運動的連續性,在過渡動畫的任何時刻玩家下達指令,物體都能流暢地倒退回原本的狀態。
這種做法非常適合只有兩個狀態進行來回遷移的物體,比如一個浮出窗口的打開和關閉,一個按鈕的亮起和暗掉等等。
3、立刻完成
立刻完成指的是,如果在過渡動畫的狀態下玩家下達了其他指令,那么就立刻完成過渡動畫的播放,從過渡動畫播放完成的狀態開始執行玩家的指令。這種做法適合于某些情況下的多種狀態遷移,由狀態A遷移至B,然后又遷移至C。
比如,玩家將鼠標懸停至某個按鈕上時,按鈕在播放從一般狀態到懸停狀態的過渡動畫,而此時玩家如果點擊了按鈕,就立刻完成過渡動畫,從懸停狀態開始播放按下按鈕的過渡動畫。
但是這種做法會使動作的連續性遭到破壞,因此不適用于持續時間較長的過渡動畫。
4、加速完成
加速完成指的是當某個物體處于由狀態A至狀態B的過渡動畫過程中,玩家又下令讓物體遷移至狀態C時,則加速完成過渡動畫A至B,并且加速后的過渡動畫處于“有始有終”的狀態,在播放完成后立刻執行遷移至狀態C的指令。考慮到人類的反應速度,如果加速后的過渡動畫在0.1秒內完成,指令延遲還是在可接受的范圍內的,但這0.1秒的加速過渡動畫,有和沒有在體驗上卻是天壤之別。我們用指令的輕微延遲為代價,換取了狀態切換的連續性。
比如,玩家的角色一開始坐在地上(狀態A),玩家命令其站起(狀態B),這時開始播放站起來的過渡動畫(A至B),此時玩家又命令角色移動(狀態C),站起來的過渡動畫(A至B)被加速到0.1秒內完成,即角色更快速地站了起來,站起來后角色開始播放由站立到移動狀態的過渡動畫(B至C)。
如果在站起來的0.1秒內(加速的A至B)玩家又下達了跳的指令(狀態D),假如我們采用“有始有終”的做法,那么這個指令要等待0.1秒的過渡動畫(加速的A至B)完成后,才開始,即播放由站起來到跳起的過渡動畫(B至D)——也就是說,玩家原本的由站立到跑動(B至C)的指令被覆蓋了,替換成了由站立到跳起(B至D)。更進一步,假如在這0.1秒內玩家下達了無數個導致狀態遷移的指令,除了最后一個以外的指令全部都會被覆蓋,最終只執行最后下達的指令,并開始播放過渡動畫。
另一個做法是,加速后的動畫再次接受指令時,不用“有始有終”的做法,而用“立刻完成”的做法。
接著用剛才的例子,如果玩家的角色在站起來的0.1秒內(加速的A至B),玩家又下大了跳的指令(狀態D),那么由坐到站的動畫(加速的A至B)會立刻結束,開始播放由跑至跳的動畫(C至D)。這體驗很怪,因為玩家會發現自己的角色還沒有完全站起來,卻突然開始播放由跑進入跳的狀態了。
這種做法犧牲了一定的連續性,而最大程度上保證了玩家操作的即時性,在對即時計算要求較高的游戲如動作游戲中,這種做法更適合,而如果是RPG則第一種做法更合適。我猜測《魔獸世界》就是采用的第一種做法,雖然我并不知道他們的角色狀態是如何控制的。而采用第二種做法的游戲并不常見,因為這種做法比較麻煩,注重即時操作的游戲往往都只采用“有始有終”或“立刻完成”的做法了,要么就得動畫全播完,要么就是播到一半就能強制轉換狀態(比如《拳皇》的SUPER CANCEL機制),很少采用“加速完成”與“立刻完成”相混搭的做法。
GameRes游資網 2015-08-23 08:43:25
稱謂:
内容: