Monday, November 12, 2018

Amazon Lumberyard学習メモ:アナログスティックの向きを取得する

前回から引き続き、以前作ったキャラクターの改良です。今回からは
・移動方向に合わせてモーションを変える
です。

現状ではどちらの方向に動いても前進モーションが再生されてしまっています。これを、右/左並行移動時と後方移動時にはそれぞれ専用のモーションを再生する様にします。
ですが、それだけでは不十分です。斜め方向に移動した時はそれぞれのモーションをブレンドしなければいけません。その際、角度に応じてブレンドの量を変化させる必要もあります。

重要な作業は以下の二つです。
1)モーションブレンドの量として使う為に、アナログスティックの向きの角度を取得する
2)Anim Graphでモーションブレンドのシステムを作成する
今回は1)の説明です。

検証の為に別のレベルでスクリプトを作成してみました。
こちらはInputBindingsです。


こちらがスクリプトです。

スクリプトの上半分ではアナログスティックのXとYの入力量を変数に入れています。下側では以下の処理を行っています。
1)まず変数に入れたXとYの入力量をArcTan2ノードに渡して角度(ラジアン)を取得します。ArcTan2ノードでは全周(2πラジアン)の範囲で角度が取得出来ますが、範囲は「0〜全周」ではなく、「マイナス半周〜0〜プラス半周」となります。
2)次に、取得した角度を0.0〜1.0の範囲の値に変換します。普通に考えれば2πで割り算して0.5を足せば良いのですが、定数πみたいなのは見つからなかったので、Radians to Degreesノードで度数法に変換してから360で割り算して0.5を足しています。

0.0〜1.0に変換したのは、Anim Graphのモーションブレンドで0.0〜1.0のウェイト値を使うからです。
次回はAnim Graphでモーションブレンドのシステムを作成します。

No comments: