遊戲動畫由於受到遊戲系統的約束,開發時會比影視動畫增加一些額外的要求,本文記錄了老王開發遊戲動畫時遇到的一個小問題,在分析了Capcom的街霸V動畫後借鑑了其中的技巧。
下圖是昨天為隆做的升龍拳動畫,是不是覺得哪裡有點彆扭?
仔細看看發現,角色起跳後重心發生了「飄移」,當前的角度看:下落時重心向左側「飄移」
從曲線圖上也能證明這一點
物體在空中,忽略水平外力時,應該是垂直自由落體運動或拋物運動。重心水平方向的運動應該和水平初速度相同,而不可能相反。這個動畫,即便有水平初速度,也一定是向右的,而重心下落的軌跡卻是向左偏移。這就是上面的動畫看起來彆扭的原因。
這是一個遊戲的迴圈動畫,因此要求首幀和尾幀姿態(大致)相同,並且不能出現位置移動,否則就會出現「滑動」的問題。
但是仔細分析這個動畫的過程,如果「老老實實」做的話不出現位移很難做到。下面我們從下蹲姿勢開始逐關鍵幀看一下:
下蹲姿勢
下蹲時重心軸在兩腳之間
蓄力姿勢
蓄力時重心軸開始向右移動至角色的左腿
最高點
角色轉身180度騰空,這時的理論上重心應該由於慣性以及旋轉繼續向右移動。那麼他落地以後的位置肯定不應該是原來的位置了(必然向右偏移),由於我們的尾幀是從首幀複製過來的(重心在當前重心的左邊),所以下落時就必然發生了前面提到的向左側「飄移」。
於是問題來了,如何同時實現 「首尾幀無位移且重心不飄移」 這兩個要求呢?
注意:不能通過落地以後角色小碎步自己回到初始位置的方法。
下面咱們看看街霸V中,Capcom的做法,看看起跳前後的起跳前後的2幀:
迴圈播放一下這2幀
我們會發現,這2幀中角色的重心並沒有如我們分析的那樣繼續發生偏移,而是「偷偷」將支撐腳(左腳)的位置向左移動了一些。在現實世界這種情況是不合理的,但是由於這個變化發生在相鄰的2幀之間(0.03秒)並且隨後角色又快速上升(失去了參照物),所以視覺效果上,我們並沒有看到什麼不妥。
使用了這樣一個小的「Trick」,使得角色的重心沒有發生大的偏移,自然垂直上升再下落以後,也依然能迴歸到原位。
所謂 「抓大」,就是一要不能違背遊戲系統的需求,位移,幀數設定等等,二是角色重心軌跡以及關鍵姿態等醒目的效果要合理;所謂 「放小」,就是在時間很短不易察覺的中間畫上可以採取點 「矇混過關」 的小的技巧。遊戲動畫由於受到遊戲系統的約束,有時不如影視動畫那麼自由,因此必須 「合理取捨」 才能達到最好的效果。