アニメーターでスパゲッティを避けるには?


9

Unityでアニメーションを操作していますが、これまでに4つ(上下左右)しか作成しておらず、アニメーションウィンドウは次のようになっています... ここに画像の説明を入力してください

問題は、私が上に移動している場合、ヒーローが「ニュートラルアイドル」(または彼が開始したもの)に移動しないで上を見続けることを望んでいることですが、それは私が4つのアイドルポジションを持っていることを意味します... 、左または右、彼らは追加の各アクションで指数関数的に行く...

これは私が何か間違っているように感じます...

異なるアクション間で遷移するより良い方法はありますか?


私は長い間これをやろうとしてきました。悲しいことに、私の結論は、あなたはできないということです。アニメーターは常にスパゲッティのウェブに変わり、私たちはそれと一緒に暮らさなければなりません。この動画をご覧ください。youtube.com

回答:


9

この種の問題はBlendTreesで解決できます(一般に、ブレンドツリーに依存することが賢明です)。ブレンドツリーは一種のマルチアニメーション状態であり、(float)パラメータに基づいて、現在アクティブになっているアニメーションを決定します(または、結果のアニメーションを複数のアニメーションのブレンドにすることもできます)。アニメーションがブレンドされずに入れ替えられた場合でも、入れ替えはアニメーションの途中で行われます(つまり、「終了する」アニメーションが35%の場合、新しいアニメーションは35%から再生されます)。「外側」から、これはすべて1つの単純な状態であるかのように非表示になります。

たとえば、8つのスプライトアニメーション(4つのメイン方向と4つの対角方向を持つアイドル)を持つブレンドツリーがあるとします。このブレンドツリーには、「水平」と「垂直」の2つのパラメータがあります。そして、これらの2つのパラメーターに基づいて、ブレンドツリーが再生するアニメーションを決定します。「水平」パラメータに基づいて、ブレンドツリーは左/右のアニメーションから選択し、「垂直」パラメータは上/下のアニメーションを決定します。次に組み合わせると、8つのアニメーションすべてに対角線が表示されます(ジョイパッド/ジョイスティックの背後にあるのと同じ考え方です)。

ここに画像の説明を入力してください

少しわかりにくいので、StackExchangeがリンクを好まなくても、私が作成した短いビデオ例をリンクします。画面の右上部分に注目してください。灰色の点は「状態」/アニメーションで、アクティブな点は赤い点に近いものです。最初に述べたように、赤いドットまでの距離に基づいて各アニメーションに影響/強さを持たせることはさらに複雑になる可能性があり、その結果、いくつかのアニメーションがブレンドされます。

外部からは1つの状態(ブレンドツリー)のみで、同じ概念を歩行と攻撃に適用すると、3つの状態のみがリンクされます。

ブレンドツリーは、空のAnimator領域を右クリックして[状態の作成]-> [新しいブレンドツリーから]で作成されます。そこからは、すべてインスペクターにあります。ブレンドツリーを選択すると、ブレンドツリーのタイプ(1D、2Dなど)を選択し、アニメーションを追加して、それらを配置し(パラメーター値に対して)、制御パラメーターを選択できます。

ブレンドツリーの詳細が必要な場合は、次にUnity- Unite 2016Unityチュートリアルのビデオをご覧ください。


2

ここでの問題は、トリガーを使用してアイドルを切り替えるのではなく、すべてを結び付けようとしていることです。if-elseまたはswitch-caseタイプの条件付きを使用して、アイドルアニメーションを選択する必要があります。見栄えの良い図を作成しました(そのうちの1つがデフォルトのケースであると想定しています)。

ここに画像の説明を入力してください

追加情報:

アニメーターが認識するパラメーターの設定方法、アニメーションを組み合わせるためのステートマシン、設定した変数を確認する方法についてのステートマシンの動作については、アニメーションパラメーターを参照してください。


こんにちはジョンですが、実際にはどうすればよいですか?トリガーを使用してアイドルを切り替える、またはアイドルを切り替えるのはなぜですか?他に使用しているアイドルアニメーションを選択するにはどうすればよいですか?また、図では、なぜ私はアイドルレフトに移動してから、左ではなく左に移動し、次のアクションを待機してアイドルレフトに入るのでしょうか、またはこれは逆になりますか?
Matas Vaitkevicius

@MatasVaitkeviciusアニメーションの終了時または開始時に変数を設定および確認できます。ケースをチェックするだけの空のアニメーションを作成し、それを次のパートにリダイレクトするか、それから抽象化レイヤーを作成できます。詳細については、マニュアルへのリンクをいくつか含めました。
ジョンハミルトン

それで、トランジションを切り替えるパラメータを持つ他の場合はどうすればよいですか?何の例では、あなたは私が疑問に行ったように、マニュアルの移行を行うだけでリンクされたすべてのメカニズムが....ありません
マタスVaitkevicius

@MatasVaitkevicius最初に少し検索する必要があります。gamedev.stackexchange.com
John Hamilton

しかし、これは私がそれをした方法です。アクションの発火をトリガーし、アニメーションを開始すると、その方向でアイドルになります...今、あなたが言っていること(私が正しく理解している場合)は、その方向でアイドルになるのではなく、アニメーション後に切り替えメカニズムに移動します。私のために適切なアイドルを選ぶだろう...しかし、私はそのような機構のどこを見ていない、あなたは....あなたの答えにそれをしてくださいコピーできます
マタスVaitkevicius
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.