7.0 KiB
GASとは
game aimation sampleはepicgamesが提供しているassetです。
まずはこれを使ってキャラクター(character)を動かしてみましょう。
level(map)
/Content/Levels/DefaultLevel
を開きます。- 再生ボタンを押します。
- ゲームがプレイできます。
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
で動かしています。このファイルを開いて編集してみましょう。
EventGraph
というノードが記述されている場所(画面中央)で右クリックし、Debug Key 1
を追加します。- Releasedというピン(pin)から
Print String
を追加します。 - ゲームを再生します。
- キーボード(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)
ここから本当に重要なことを書きます。最初はわからないかもしれませんが、最後まで読んでまた来ると、わかるようになっているかもしれません。
- フォルダの
/Content/Blueprints/
で右クリックして、ブループリントクラス、GameInstance
を作り、名前をGM_DefaultConfig
にします。 設定 -> プロジェクト設定 -> マップ&モード
のGame Instance:GameInstance Class
にGM_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
からUserCharacterAnim
をtrue
に変更します。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]
が表示されます。