サードパーソン ブループリント ゲーム入門 (9) ステートマシンとは
ビデオの内容紹介
ステートマシンとはどのようなものかを説明して、次回のステートマシン作成に備えます。説明が若干錯綜しているので、この記事ではすっきりまとめたいと思います。
原題 Introduction to Third Person Blueprint game – 9 – Intro to State Machines
下の画像は次回『サードパーソン ブループリント ゲーム入門 (10)』で表示されるものです。これは、今回の説明を訂正するものです。ですから、ここではその訂正内容を含めて (先取りして) 、ステートマシンとは何かということについてまとめたいと思います。
まず、ステートマシンとは、ある条件 (Rule) に基づいて、あるステート (状態=たとえば「走る」) のアニメーションに切り替えることができるようにするグラフィカルな機能です。
ステートの具体例として、4 つ挙げられています。一つは「Idle-Walk-Run」(この前作った「待機状態」「歩く」「走る」のいずれかの状態) です。それから「Jump Start」、「Jump Loop」、「Jump End」です。
Jump が 3 つに分かれているのには理由があります。
それは、ジャンプがいつ終わるかあらかじめ分かることがないからです。だから、「Jump Loop」を作って、空中での状態をループさせるようにします。するとその前後は、必然的に 1 回限りの (ループしない) ジャンプが始まった時とジャンプの終わりということになります。
それぞれのステートが切り替わる条件、Rule はどのようになっているのでしょうか?
「Idle-Walk-Run」ステートから「Jump Start」ステートに移行 (transition) する Rule は、「空中に浮いている」(In Air)です。
「Jump Start」ステートから「Jump Loop」ステートへの移行は、「Jump start の終わり近くである」(Near end of start animation) です。つまり、「Jump Start」ステートは「Jump Loop」と違って、アニメーションの長さが一定です。
「Animation Loop」から「Animation End」への移行は、「空中に浮いていない」(In Air, Not) です。つまり着地した時に「Jump End」のステートに移行します。
最後に「Animation End」から「Idle_Walk_Run」への移行は、「Animation End の終わり近くである」(Near end of jump end animation) です。
ところで、(次回) チュートリアルでは、これらのステート全体を Locomotion (動き) という名前のステートマシンにしています。(今回のチュートリアルでは、誤って Locomotion もステートと呼んでしまっていたようですが)。
このように見ていくと、非常に簡単な仕組みになっていることが分かります。ただし、少し抽象的な説明であるので、次回、実際にステートマシンを作ってみると、その仕組がよく分かると思います。
今回は、これにてお終いです。お疲れ様でした。