2016-04-22 22 views
0

問題:Unityでは、アニメーションが動きを乱すのを防ぐ方法を教えてください。

私は文字モデルNav Mesh Agentを持っています。それは移動するために私がそれを言うどの目的地にも完全によく動く(NavMeshAgent.destinationの特性を使用して)。

しかし、私は店からダウンロードしたアニメーションコントローラを使用するとすぐにこれが失敗します。キャラクターは目的地には行かない。代わりに、無限に周りを円で走り回ります。

なぜこのようなことが起こるのかわかりませんが、実行中のアニメーションが何らかの形でキャラクタの能力を失うと思います。インスペクタは、関連する.fbxファイルのインポート設定で、Average Angular Y Speed: 0.0 deg/sと表示されます。これは私がtrueNavMeshAgent.updatePositionNavMeshAgent.updateRotationプロパティを明示的に設定しているにもかかわらず起こっ続ける理由を、私は本当に、本当に理解できないのは何

です。私がdocumentationを理解している方法では、Nav Mesh Agentが移動したいのでキャラクターを移動させるはずです。

この問題を解決するにはどうすればよいですか?アニメーションが動きに干渉しないようにするにはどうすればよいですか?

答えて

2

場所内のすべてのアニメーションを行うと、運動を行うためにコードを使用して、ルートモーションをオフにして、より良い動きを取得したり、ルートモーションを使用してmecanim`sはエンジンを再ターゲットできるようにステートマシンの値を使用することができますあなたのアニメーションが適所にないということがあなたの問題だと思います。

+0

ありがとうございました。 'ルートモーションを適用する(Apply Root motion) 'をチェックすることは、魅力のように働いた。しかし、私が尋ねるかもしれないが、なぜ 'NavMeshAgent.updatePosition'と' NavMeshAgent.updateRotation'は効果がないのですか? – gaazkam

0

最初に、Unityの最大のプラスの1つは、そのmecanimです。ルートモーションを無効にすることは大きな利点を否定しています。

2番目:アニメーターとnavmeshエージェントが競合する注文を出している可能性があります。 updatePositionをfalseに、updateRotationをtrueに設定します。したがって、アニメーターはあなたの移動速度を制御し、navmeshエージェントは角速度を制御します。他の考えられる原因は、目的地に到達できないことです。ベクトルのY成分を調べて、それらが同一平面上にあることを確認します。

関連する問題