• 沒有找到結果。

3.3 電腦控制的非玩家角色之動畫產生

3.3.2 環境改變的動畫反應

立 政 治 大 學

Na tiona

l Ch engchi University

3.3.2 環境改變的動畫反應

非玩家控制角色的動畫反應,會依照當時環境的不同,或互動目標的狀態不同而需要做 不同的反應。例如移動場景家具,改變非玩家控制角色行走路徑。對於故事體驗者來說,

可能在尋找證物的過程中進行移動過桌椅、開關門或關燈等行為,而這些小行為並不影 響故事的走向,卻會影響當下的人物動畫呈現,例如故事體驗者將椅子位置移動後,其 中一名非玩家控制角色欲跟故事體驗者對話則需改變路線繞過椅子。

圖 22 及圖 23 則為其中一種動畫範例模組判斷流程圖及實際完成動畫之比較圖。

每一個動畫事件模組都會有目標物(Target)、事件開始執行開關(Start)和事件完成

(Finish)的參數,其他動畫事件會根據事件的不同而有不同的配置。我們以撿拾目標 物的動畫為範例,Target 為要撿拾的目標物品、Start 為劇本設定要開始的 bool 參數、Finish 是完成這個任務的 bool 參數。首先判斷此目標物是否在角色觸手可及的地方,若是,

則進入下一個判斷;反之,則頇規劃路徑並播放走路動畫移動至目標物地點。當目標物 在角色不需移動即可觸碰到的地點,判斷目前障礙物位於角色的方位,進而判斷由右手 撿拾或左手撿拾,何者較為自然,並且完成撿拾動畫。

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

圖 22 角色撿拾物品之動畫規劃

圖 23 執行左手撿拾動畫圖,左方人物為已錄製動畫加上動畫規劃,右方人物為同一 個錄製動畫撥放。

是上述所說的一個動畫事件模組。當兩個模組是利用 OR(自訂函式為 void Animation-EventsOR(event , event , condition))連接,左邊的動畫事件已被執行,但下方條件

(Condition)不成立,則會開始執行右邊的動畫事件。當兩個模組是利用 AND 連接(自 訂函式為 void AnimationEventsAND(event , event)),則需要兩個模組都完成之後才會繼續 往下執行,動畫順需為左邊動畫事件模組完成之後,接續右邊動畫事件模組,兩個模組 都完成才算完成事件,才能繼續往下執行。

程式範例(以圖 24 為例):

AnimationEventsOR(PickUp(Ball)

, AnimationEventsAND(PickUp(Weapon),ShootSome(Owner)) ,Target.available);

若角色得到頇執行撿拾目標物的任務指令,需先判斷目前狀態物是否已被其他人所 有,若非,則執行圖 22 之動畫,反之,則根據狀態樹的設定執行動作,將目標物變為 可拿取的狀態。如範例所示,動畫呈現會規劃找到武器,並且殺了目標物所有者,進而 完成撿拾目標物的動作。

‧ 國

立 政 治 大 學

Na tiona

l Ch engchi University

圖 24 狀態樹模組範例

在範例故事中,任務是成為兇手的非玩家控制角色,會尋找兇器的所在位置,完成 撿拾動作之後,再尋找被害者角色進行謀殺的動畫。兇器的位置是由故事體驗者決定的,

甚至故事體驗者可以將兇器握有在自己的手中,這時候兇手會多一個搶奪兇器的動畫。

相關文件