Unity3D Mecanim アニメーション システム ジェネリック アニメーションは、アニメーションのディスプレイスメントをサポートします

私たちが現在取り組んでいるゲームでは、Mecanim アニメーション システムで最新のヒューマノイド アニメーションを使用するという強い需要がない可能性があるため、最初の選択肢はジェネリック アニメーションを使用することになるので、道のりは長いです.前に。汎用アニメーションを使用することを確認したら、続行します。以前のプロジェクトでは古いアニメーション システム (Legacy) が使用されていたため、すべてのキャラクターと NPC のアニメーションは原点で行われます. キャラクターと NPC は、アニメーションの再生中にキャラクターの変位を制御するためにスクリプトを使用する必要があります. この要件は、プログラム アニメーションを担当する子供の靴と緊密に連携して、キャラクターのアニメーションの変位を調整した状態に調整することは、もちろん特に難しいことではありませんが、アニメーションを直接変位に近づけることができれば、プログラムとアートの子供の靴は解放され、アニメーションのデザイン時間はより大胆になる可能性があります。結局のところ、キャラクターアニメーションの実際の変位はプログラム制御よりも調整されており、誰もが多くのことを保存しています。ナンセンスなことをたくさん言ったので、トピックに戻ります。UnityにインポートしてAnimator Controllerを作成したら、アクションを設定して再生ボタンをクリックして効果を確認します。Nima、私はキャラクターが単一のアニメーションの再生中に移動することを発見しましたが、各アニメーションが終了した後にアニメーションが IDLE 状態に戻ると、シーン内のキャラクターの位置がフラッシュバックし、最初に直接戻ります。アニメーション再生中のキャラクターの位置、およびアニメーション全体を通して、キャラクターの位置は決して変化せず、キャラクターに結び付けられた Capsule Collider はまったく動かず、完全にキャラクターの後ろにあります。何が問題ですか?この問題は、ヒューマノイド アニメーションを使用していたときは発生しませんでした. ヒューマノイド アニメーション タイプを再度復元しようとしたところ、ヒューマノイド アニメーション タイプではこの変位フラッシュバックの問題が発生しないことを確認しました. 各アニメーションが終了した後、キャラクターの位置はこれです.アニメーションが終了する場所。

長い間検索した後、最終的に解決策を見つけました.実際には、アニメーションをインポートするときに、アニメーション スケルトンのルート ノードを指定するだけで済みます。

咱们对比一下这两个设置的选项,其中Humanoid动画类型导入时,根本就不需要设置Rig的根节点,而Generic动画就需要设置,而且默认设置是none,所以需要手动指定为模型对应骨骼的根节点。

看来Unity动画支持Apply Root Motion这个特性的实现机制就是根据骨骼在动画中的位移在引擎内进行计算滴,如果我们选择使用Humanoid动画的话呢,肯定需要设置一个人形的骨骼Avatar信息,这个Avatar信息中就会包含骨骼各个节点的信息,其中当然也包含了根节点(或者说已经不需要根节点了,因为所有关键的骨骼信息都会映射到Avatar信息上)。而对于Generic动画呢,Unity自身并不清楚骨骼之间的关系,而Apply Root Motion这个特性就是根据骨骼位移自行计算的,那么就需要我们手动地指定动画使用的骨骼的根节点了,根据根节点在动画中的位置变化就可以动态计算出来对象在场景中实时的位置了。

下图就是修改Root Node设置之后动画播放时的效果了,Capsule Collider也实时跟着动画的播放改变位置了。

おすすめ

転載: blog.csdn.net/Ling_SevoL_Y/article/details/129467627