ue/book/gas/README.md
2025-02-06 04:45:30 +09:00

7.0 KiB

GASとは

game aimation sampleはepicgamesが提供しているassetです。

まずはこれを使ってキャラクター(character)を動かしてみましょう。

level(map)

  1. /Content/Levels/DefaultLevelを開きます。
  2. 再生ボタンを押します。
  3. ゲームがプレイできます。
key en ja
w,a,s,d move 移動
space jump ジャンプ
space sprint ダッシュ
ctrl walk 歩く
c crouch しゃがむ
マウススクロール camera カメラ

ボタンに乗るとキャラを切り替えることができます。

レベル(level)はマップ(map)とも呼ばれます。プレイ(play)する場所を作ります。

特にボタンが重要です。tipsを確認しましょう。

/Content/Levels/DefaultLevelを右クリックして参照ビューアを選択してみます。どのファイルを参照しているかわかります。

BP

characterは/Content/Blueprints/CBP_SandboxCharacterで動かしています。このファイルを開いて編集してみましょう。

  1. EventGraphというノードが記述されている場所(画面中央)で右クリックし、Debug Key 1を追加します。
  2. Releasedというピン(pin)からPrint Stringを追加します。
  3. ゲームを再生します。
  4. キーボード(keyboard)の[1]を押すと、画面にHelloが表示されます。

これがbp(blueprint)でゲームを作る要領になります。

ABP

characterの動きは/Content/Blueprints/ABP_SandboxCharacterで設定されています。

input

まずkeyがどこで設定されているのかと言うと、/Content/Input/IMC_Sandboxで設定されています。

例えば、/Content/Input/IA_Aimをコピー(copy)して、新しくIA_Oneを作ってみましょう。それをIMC_Sandboxで読み込んで[1]に割り当てます。

次に、IA_Oneを先程のCBP_SandboxCharacterにドラッグ&ドロップ(D&D)します。

するとEnhancedInputAction IA_Oneという赤いノードが作成されたと思います。Debug Key 1を削除して代わりにつなぎます。色にも意味がありますが、そのうちわかってくると思います。

ゲームを再生してみると先ほどと同じkeyで動きます。

variable(var)

ここから本当に重要なことを書きます。最初はわからないかもしれませんが、最後まで読んでまた来ると、わかるようになっているかもしれません。

  1. フォルダの/Content/Blueprints/で右クリックして、ブループリントクラス、GameInstanceを作り、名前をGM_DefaultConfigにします。
  2. 設定 -> プロジェクト設定 -> マップ&モードGame Instance:GameInstance ClassGM_DefaultConfigを読み込みます。

これを開いて、変数のところでUserTestという名前でstring型の変数を作ります。コンパイル(compile)してください。デフォルト値はWorldとでも入れておきましょう。

次に、/Content/Blueprints/CBP_SandboxCharacterを開いて、EventGraphで右クリックし、Cast To GM_DefaultConfigを選択します。

インプット(input)のpin(ピン)にあるObjectにはGet Game Instanceをつなぎます。そして、アウトプット(output)の青線はGet UserTestと検索し、それをPrint Stringにつなぎます。

さて、こにkeyを設定して再生するとWorldと表示されるはずです。

特に重要なのが変数の型です。種類もそうですが、変数の型の右側にある色アイコンをクリックしてみると、たくさんの形式があることがわかります。

  • 単一
  • 配列
  • 設定
  • マップ

配列を使ってみましょう。UserTestListという名前でstringの配列を作成します。

ここで、デフォルト値に追加できることに気づくはずです。

例えば、単語を3つ追加してみます。

  • [0]ai
  • [1]burst
  • [2]can

Cast To GM_DefaultConfigからGet UserTestListを引っ張り出し、Lengthにつなげます。それをprintしてみると、2と表示されるはずです。

length(len)はその配列に追加された数を知ることができます。

では、全部の値を取り出すためforを書きましょう。UserTestListからFor Each Loopを伸ばしてLoop Bodyからprintにつなぎます。値はArray Elementから取ります。

もし文字列をつなぎたいならAppendが使えます。

変数にはObjectをいれることもできます。たくさんのObjectを入れておき、Findで検索して取り出すこともできます。

では、characterを全部まとめて検索できる変数を作ってみます。

名前はUserCharacterObjでstringを選択し、マップを選択します。右側のマップはオブジェクト(object)と検索し、object参照を選択します。

str obj
--- ---

cbp characterと検索し、characterのcbpを入れていきます。名前はわかりやすいものにしてください。例えば、manny, quinnなど。

では繋いでいきます。

[Get Game Instance] --> [Cast To GM_Defaultconfig] --> [UserCharacterObj]

--> [Find(manny)] --> [Get Object Name] --> [Print String]

基本的にこれを利用して、他のBPと値をやり取りすることになります。例えば、ABP_SandboxCharacterで条件を満たしたとき実行してほしいアニメーション(anim)があったとします。

この場合、まずGM_DefaultConfigの変数でUserCharacterAnimをboolean型で作り、実行してほしいタイミングでCBP_SandboxCharacterに書いたCast To GM_DefaultconfigからUserCharacterAnimtrueに変更します。Set UserCharacterAnimで検索してください。そして、ABPにはUserCharacterAnimがtrueならanimを再生する処理を書きます。

function(func)

次は関数です。関数は簡単で、何度も繰り返す部分を再利用可能な形で残します。それが関数です。

新しい関数を作ってみましょう。左バーの関数(+)を押せば作成されます。名前はFuncTestにします。

関数を表す紫色のボックス(box)を選択した状態でinputとoutputの見てもらって、inputにboolという名前でboolean型を作ります。outputにはstrという名前でstring型を作ります。

処理の内容はboolがtrueなら[yes]というstringを出力し、falseなら[no]にします。

確認してみましょう。[9]を押すと[yes][no]が表示されます。