キャラの移動速度と移動アニメーションのレートを左スティックの倒し具合に合わせる方法!

※説明不足・曖昧で適当な表現あり。(まあいつもの事か)

 

 

サードパーソンテンプレートを使って紹介する。

f:id:Free_Gamer:20181225001309p:plain

※今回はXboxのコントローラーを使用した際の説明になっている。

 

まず、左スティックを約半分倒した時、

キャラの移動アニメーションはどう見えるか?

※一部分かりやすいようにスローを使っている。

youtu.be

お分かりいただけただろうか。

 

地面をつるつる滑っている感じで、とても不自然。

地に足をついて歩いている感じがしないだろう。

 

なので今回は、そんな不自然さを無くすために・・・

 

左スティックの倒し具合で

キャラの移動速度と

アニメーションのレートを変える方法

 

を紹介する。

 

サードパーソンテンプレートに最初っから備わっているグレーマンの移動アニメーション(画像だと「ThirdPerson_IdleRun_2D」)をコピーし、

コピーしたもの(画像だと「ThirdPerson_IdleRun_2D_New」を開いて改造しよう。

f:id:Free_Gamer:20181225002015p:plain

 

ThirdPerson_IdleRun_2D_New

以下のように改造しよう。

①ThirdPersonWalk

②ThirdPersonRun

f:id:Free_Gamer:20181225002508p:plain

f:id:Free_Gamer:20181225002627p:plain

レーマンのアニメーションBP「ThirdPerson_AnimBP」を開こう。

f:id:Free_Gamer:20181225003424p:plain

 

イベントグラフ

f:id:Free_Gamer:20181225003530p:plain

関数を2つ作る。

「CalculateGaitValue」

「CalculatePlayRate」

f:id:Free_Gamer:20181225003749p:plain

 

「CalculateGaitValue」

Speed・・・キャラの速度

WalkingSpeed・・・最大歩行速度

RunningSpeed・・・最大走行速度

f:id:Free_Gamer:20181225005350p:plain

f:id:Free_Gamer:20181225004330p:plain

まず「Gait」の意味は??

 

Gait・・・足取り、足元、歩き方

 

である。

 

だが今回の場合は、「歩き方」という意味で捉えたほうが分かりやすいだろう。

 

つまり、この関数「CalculateGaitValue」は、

 

キャラの歩き方を定義するための値を計算する関数なのだ。

 

キャラのSpeedによって、Gait値を変えるようにしてある。

 

Gait値

0・・・Idle(直立)

1・・・Walk(歩行)

2・・・Run(走行)

 

『Idle(0)~Walk(1)に遷移するための処理』

キャラのSpeed(Value)が、「0(InRangeA)」の時、「0(OutRangeA)」を返す。

キャラのSpeed(Value)が「InRangeB(WalkingSpeed)」に設定した値に達した時、「1(OutRangeB)」を返す。

f:id:Free_Gamer:20181225010053p:plain

『Walk(1)~Run(2)に遷移するための処理』

キャラのSpeed(Value)が、「0(InRangeA)」の時、「1(OutRangeA)」を返す。

キャラのSpeed(Value)が「InRangeB(WalkingSpeed)」に設定した値に達した時、「2(OutRangeB)」を返す。

 f:id:Free_Gamer:20181225010104p:plain

A(Speed)の値が、B(WalkingSpeed)の値より大きい場合、

f:id:Free_Gamer:20181225010859p:plain

Trueの値をGait変数に格納。そうじゃなければFalseの値を格納。

f:id:Free_Gamer:20181225011215p:plain

 

「CalculatePlayRate」

Gait・・・キャラの歩行状態

WalkAnimSpeed・・・キャラの最大歩行速度

RunAnimSpeed・・・キャラの最大走行速度

Speed・・・キャラの速度

ここら辺ちょっと理解が曖昧ですが・・・w

f:id:Free_Gamer:20181225014338p:plain

f:id:Free_Gamer:20181225021355p:plain


アニメーションレート

OutRangeA・・・0

OutRangeB・・・1

 

『歩行アニメーションレート計算処理』

キャラのSpeed(Value)が、「0(InRangeA)」の時、「0(OutRangeA)」を返す。

キャラのSpeed(Value)が「InRangeB(WalkingAnimSpeed)」に設定した値に達した時、「1(OutRangeB)」を返す。

f:id:Free_Gamer:20181225015631p:plain

『走行アニメーションレート計算処理』

キャラのSpeed(Value)が、「0(InRangeA)」の時、「0(OutRangeA)」を返す。

キャラのSpeed(Value)が「InRangeB(RunningAnimSpeed)」に設定した値に達した時、「1(OutRangeB)」を返す。

f:id:Free_Gamer:20181225015644p:plain

 

アニムグラフ

f:id:Free_Gamer:20181225022012p:plain
Idle

f:id:Free_Gamer:20181225021803p:plain

Run

f:id:Free_Gamer:20181225021930p:plain

Idle→Run

f:id:Free_Gamer:20181225022052p:plain

Run→Idle

f:id:Free_Gamer:20181225022123p:plain

 

 

レーマンのBPを開こう。

f:id:Free_Gamer:20181225022738p:plain

CharacterMovement(継承)の詳細パネル

MaxWalkSpeedを、設定したRunnnigSpeedの値(375)と同じにする。

f:id:Free_Gamer:20181225022622p:plain

f:id:Free_Gamer:20181225022919p:plain

↓RunnnigSpeedの値と同じにする。

f:id:Free_Gamer:20181225023053p:plain

 


それでは実際にプレイしてみよう!

走行

左スティック全倒し

youtu.be


歩行

左スティック半倒し

youtu.be

 

ゆっくり目の歩行

左スティックちょい倒し

youtu.be

 

左スティックの倒し具合で、キャラのスピードとアニメーションのレートが変わっているのが分かる。

これでかなりリアルな移動アニメーション処理が出来た!

 

自分でもところどころ理解しきれていない部分があるので、ちょくちょく荒い説明になったかもしれないが、

こんな説明でも伝わってくれたら幸いだ。

 

それではまた!^^ノシ