角色的邏輯、數(shù)據(jù)、動畫
我最近學習到了一些關于UE4中AI部分的內容,現(xiàn)在我想制作一個動物的AI,那么它的主體邏輯應該放在哪里呢?
數(shù)據(jù)集
首先角色一定有一個數(shù)據(jù)集,這個數(shù)據(jù)集表示了這個角色的各種信息和狀態(tài),比如饑餓,口渴,生命值,移動速度,等等??紤]到同一類角色有多個實例,比如同樣是動物,復用一樣的數(shù)據(jù),但是有一些是有差異的,比如最大移動速度,饑餓消耗的速度,因此有一些數(shù)值是配置項,有一些數(shù)值是動態(tài)運行時計算出來的。因此我將這個數(shù)據(jù)集的數(shù)據(jù)分成2部分,一部分叫static config,另一部分是dynamic的,static config 經過邏輯的處理,就可以得到 dynamic 的數(shù)據(jù)。

誰來驅動數(shù)據(jù)變化?
考慮到分為玩家和AI控制兩類,那么應該是有兩種控制來源,一是玩家的輸入,另一個是來自AI的邏輯。角色的速度為什么會改變,為什么要朝向某個方向移動?為什么要進行攻擊?對于玩家控制的角色來說,是因為玩家提供了輸入,對于AI控制的角色來說,是AI的邏輯告訴它要怎么做。
另外,為什么hungry會隨時間流逝而減少,顯然,時間也是一項推動數(shù)據(jù)變化的關鍵因素。

數(shù)據(jù)集來驅動動畫
接下來,數(shù)據(jù)集就成了動畫的依據(jù),比如為什么要執(zhí)行移動的動畫,哦,是因為有了移動速度,為什么玩家移動要一瘸一拐的,是因為它的腿部受傷了,或者hp不是滿的。
總之,播放什么動畫依賴于數(shù)據(jù)集。
但是動畫同時也會對數(shù)據(jù)集進行修改,表示當前進行的狀態(tài),比如類似黑魂的游戲中,你在攻擊的時候無法移動,改變朝向的角度也被限制了。因為當前在播放攻擊動畫,所以動畫的很多事件,會影響到數(shù)據(jù)集,從而再對玩家操控角色的邏輯或者其他方面做影響。
