2016-04-22 136 views
0

問題:在Unity中,如何防止動畫與運動相混淆?

我有一個字符模型與Nav Mesh Agent組件。它完美地移動到我告訴它移動的任何目的地(使用NavMeshAgent.destination屬性)。

但是,當我使用我從商店下載的動畫控制器時,這突然失敗。角色不會跑到它的目的地;相反,它會無休止地繞圈運行。

我不知道爲什麼會發生這種情況,但我想運行的動畫不知何故會削弱角色的轉身能力。檢查器在相關.fbx文件的導入設置中顯示:Average Angular Y Speed: 0.0 deg/s

我真的,真的不明白的是爲什麼這種情況繼續發生,即使我已經明確地將NavMeshAgent.updatePositionNavMeshAgent.updateRotation屬性設置爲true。我理解documentation的方式,這應該會使角色移動,因爲Nav Mesh Agent想讓它移動,而不是其他任何動畫(包括動畫)要移動?

我該如何解決這個問題?我應該如何強制動畫不要介入動作?

回答

2

貴公司的所有動畫到位和使用代碼做運動,你可以取消根運動並用狀態機值來獲得更好的運動或使用root運動,讓mecanim`s重新定位引擎做混合,所以去看看自己是什麼讓你更好的結果,所以我想你的問題是,你的動畫不到位。

+0

謝謝,主席先生。覈對「應用根運動」就像魅力一樣。但是,如果我可能會問,爲什麼'NavMeshAgent.updatePosition'和'NavMeshAgent.updateRotation'沒有效果? – gaazkam

0

首先:Unity最大的優點之一就是它的優點。禁用根部運動正在消除一個很大的優勢。

第二:你的角色跑來跑去的原因可能是因爲動畫製作者和navmesh代理髮出衝突的命令。使用updatePosition false和updateRotation爲true。因此,動畫師控制您移動的速度以及導航網格代理控制角速度。其他可能的原因是您的目的地無法到達。檢查矢量的Y分量並確保它們是共面的。