Game Animation Sample Project
- updated: 5.7.1
- [G]ame [A]nimation [S]sample [P]roject
GASPをベースにする。
はじめに
ゲームを作り始めるとき、最初は何もわからないので、ゲームを動かしてみて、そこから内容を見て、理解したり、カスタマイズしたり、そういった事から始めます。
gaspは現在、win, mac, iosで完璧に動作し、buildが通り、app(binary)は軽快に動きます。
たとえwinでしかreleasesしないとしても、mac, linuxなどで動作を確認し、重くなっていないかを見ることで、処理のボトルネックを発見するのに役立ちます。
ゲームの安定性、軽量性、そして、multi-platformでreleasesできる可能性を高めるため、スタート時にmulti-platform対応を心がけ、開発環境を整えることは有効だと感じます。
キーの確認と追加
まず、/Game/Input/IMC_Sandboxを開きます。これがプレイヤーの操作キーを指定しています。
例えば、移動は、IA_Moveで[w], [a], [s], [d]のキーで設定されています。
IA_Moveは/Game/Input/IA_Moveにあるファイルを指定しています。
次に、/Game/Blueprints/SandboxCharacter_CMCを開いてください。先程指定されていたIA_Move等があるはずです。
例えば、/Game/Input/IA_Moveをこの画面にD&Dしてみます。すると、同じようにキー入力を受け取るノードが追加されます。
キャラクターを切り替える
/Game/Blueprints/PC_Sandboxを見てみます。ここにもキーが指定されています。
キャラクターの切り替えは、[n], [m]で設定されているようです。タイプを入れ替えるには、[n]で、見た目を入れ替えるには[m]です。
この処理は/Game/Blueprints/GM_Sandboxに繋がっており、ここで切り替えられるキャラクターを指定しているようです。
具体的には、CyclePawn, CycleVisualOverrideの関数です。
その中にある変数のPawnClasses, VisualOverridesを見てください。デフォルト値にそれぞれBPが入っています。
最初のキャラを指定するには、PC_SandboxのBeginPlayに書いておけば確実です。
https://blueprintue.com/render/gim70xj1
キャラクター(タイプ)を追加
- GM_Sandbox:
/Game/Blueprints/GM_SandboxのPawn Classesに/Game/Locomotor/BP_Walkerを追加します。 - BP_Walker:
/Locomotor/BP_Walkerを開いて、そこに/Locomotor/PC_Locomotorの内容を貼り付けます。(IA_Moveなど)
これで[n]を押すと切り替えられるようになりました。
キャラクター(見た目)を追加
vrm4uでキャラクターを追加したとしましょう。GASPで動かすのに必要なのはSK_${name}, RTG_UEFN_${name}です。
まず、/Game/Blueprints/RetargetedCharacters/ABP_GenericRetargetを開きます。
変数のIKRetargeter_Mapで新しくRTG_UEFN_${name}を追加し、値(名)をRTG_UEFN_to_${name}とします。
次に、/Game/Blueprints/RetargetedCharacters/BP_Mannyを複製します。名前はなんでもいいですが、BP_Originとします。
これを開いて、SK、つまり、Mannyを削除します。そして、vrm4uで作ったSK_${name}を追加します。それを選択して、tagと検索し、そこにRTG_UEFN_to_${name}を入れます。これは、Component Tagsです。
そして、AnimクラスにABP_GenericRetargetを指定します。
これで動くようになったはずです。キャラの切り替えとして/Game/Blueprints/GM_SandboxにあるVisualOverridesにBP_Originを追加します。
https://www.youtube.com/watch?v=IihZqi5u2AI
動きがおかしい
動きがおかしい場合は、RTG_UEFNを調整します。
- /Game/Characters/Ai/VRM/RTG_UEFN_ai
私の場合は、Retarget IK Goalsをfalseにすることでうまくいきました。
カメラ視点でキャラが動く
これは、Update Rotation Pre CMCにあるUse Controller Desired Rotation, Orient Rotation To Movementの処理です。
動かないようにするにはどちらもtureにします。
PreCMCTickの処理は、組み合わせが増えてくると、うまく条件分岐する必要が出てきます。
これは飛行システムと合わせて、非常に難しい運用を迫られます。例えば、飛行中の状態に合わせてOrient Rotationの切り替えで動きを制御します。また、BP_SuperheroFlightComponentを使用した空中で技を発動したとき、向きが変わらない問題に対応するため、技の発動中をboolにします。
https://blueprintue.com/blueprint/z_h65m_-/
横カメラに切り替える
既存のものから/Game/Blueprints/Cameras/Rigs/CameraRig_Side_Freecamを作ります。
- Copy: /Game/Blueprints/Cameras/Rigs/CameraRig_Far_Freecam
上記の2つに、Sideを追加します。
- /Game/Blueprints/Cameras/E_CameraStyle
- /Game/Blueprints/Cameras/CHT_CameraRig
次に、/Game/Blueprints/Cameras/Rigs/CameraRigPrefab_BasicThirdPersonBehaviorを開いて、6を追加し、そこにオフセットカメラノードを追加。TranslationOffset, RotationOffsetを変数化します。これがカメラの現在位置や回転になります。
/Game/Blueprints/Cameras/Rigs/CameraRig_Side_Freecamにそれぞれの値を入れると、カメラの位置が移動します。
- Translation: -300, 300, 0
- Rotation: 0, 0, -90
Sideは4番目になるので、以下のように切り替えます。
https://blueprintue.com/blueprint/78pnl-fv/
しかし、これだけでは動かず、/Game/Blueprints/Cameras/CameraDirector_SandboxCharacterを編集して、4でActivate Camera Rigを追加しなければいけません。
- /Game/Blueprints/Cameras/CameraDirector_SandboxCharacter
- Activate Camera Rig:
CameraRig_Side_Freecam
カメラのカスタマイズでprojectが破壊
- 2025-12-31
- Content/Blueprints/Data/S_CharacterPropertiesForCamera
現在、カメラのカスタマイズでprojectが破壊されます。
原因はS_CharacterPropertiesForCameraで、これは最初から壊れています。例えば、構造体のmake s character cameraを作ろうとしてください。作れないということは構造体が壊れているということです。
今回の問題はGASPが壊れた構造体であるS_CharacterPropertiesForCameraを配布していることなので、例えば、gitでファイルを復元しても意味がありません。
この問題を解決するには、構造体を作り直し、すべての依存関係を解消しましょう。その後、chooserにて、CameraStyle, CameraModeを新しい構造体のものに変更します。一番上にあるボタンです。ここは見落としがちなので注意しておきます。
こういうことはueでは頻発します。場合によっては復旧不可能になります。projectはgitで管理することをおすすめします。
2Dのステージを作る
- /Game/StackOBot/Input/IMC_SideScrollingControls
- /Game/StackOBot/Blueprints/GameElements/BP_Coin
StackOBotからアセット移行し、以下のようなBPを組みます。
https://blueprintue.com/blueprint/kk4nft3q/
https://www.youtube.com/watch?v=FTX1CrzKBy8
コントローラー操作が前後逆になる
右=後退、左=前進になっている。
これを修正するには/Game/StackOBot/Input/IMC_SideScrollingControlsでIA_MoveSideScrollingのスカラーでx: -1, z: -1に変更する。
MoverのSlidingが床に埋まる
これは、build shippingのみで発生します。
- /Game/Blueprints/SandboxCharacter_Mover
- Update_FloorValues: Break Hit Result
Impact Point->LocationImpact Normal->Normal
このように修正します。
https://blueprintue.com/blueprint/ym4xa1u_/
MoverがPawnなのでFlyingが動かない
私が使用しているFlying Systemは、PawnではなくCharacterを前提に作られていますから、/Game/Blueprints/SandboxCharacter_Moverを開いて、クラス設定からPawn -> Characterに変更します。
しかし、これをCharacterに変更してSandboxCharacter_CMCからSandboxCharacter_Moverに移行するのはおすすめしません。様々な問題が発生します。
例えば、まずはselfの向きです。
CMCのidleを設定する。
これは/Game/Blueprints/SandboxCharacter_CMC_ABPのAnimGraphのLocomotionSetup:1にします。
https://blueprintue.com/blueprint/rwgga023/
collisionバグについて
collisionに関しては、その動作があまりに不安定であるため、よくわかっていない人が多いと思います。collisionを変更するたびに、再起動とcacheの削除が必要です。
基本的には壊れているので、動作確認には以下の手順が必要です。
- collisionを一つ変更する
./$project/{Saved, Intermediate, DerivedDataCache}を削除する- 再起動する
- 確認する
もちろん、この手順は一部省略できるかもしれません。これは仕様だというのでしたら、そうなのかもしれません。ただ、他のcollision関連の不都合も非常に多いため、基本的には壊れているのだと思います。
project
func
page
[ja]
project
asset
- Game Animation Sample Project
- Control Rig Sample
- Nice Interaction System
- SoStylized
- Controller Support
plugin
platform
ref
© syui