Private
Public Access
1
0
80
GASP
syui edited this page 2026-01-27 08:59:05 +00:00

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

キャラクター(タイプ)を追加

  1. GM_Sandbox: /Game/Blueprints/GM_SandboxPawn Classes/Game/Locomotor/BP_Walkerを追加します。
  2. 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にあるVisualOverridesBP_Originを追加します。

https://www.youtube.com/watch?v=IihZqi5u2AI

動きがおかしい

動きがおかしい場合は、RTG_UEFNを調整します。

  • /Game/Characters/Ai/VRM/RTG_UEFN_ai

私の場合は、Retarget IK Goalsfalseにすることでうまくいきました。

カメラ視点でキャラが動く

これは、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

Side4番目になるので、以下のように切り替えます。

https://blueprintue.com/blueprint/78pnl-fv/

しかし、これだけでは動かず、/Game/Blueprints/Cameras/CameraDirector_SandboxCharacterを編集して、4Activate 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_SideScrollingControlsIA_MoveSideScrollingのスカラーでx: -1, z: -1に変更する。

MoverのSlidingが床に埋まる

これは、build shippingのみで発生します。

  • /Game/Blueprints/SandboxCharacter_Mover
  • Update_FloorValues: Break Hit Result
  • Impact Point -> Location
  • Impact 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の削除が必要です。

基本的には壊れているので、動作確認には以下の手順が必要です。

  1. collisionを一つ変更する
  2. ./$project/{Saved, Intermediate, DerivedDataCache}を削除する
  3. 再起動する
  4. 確認する

もちろん、この手順は一部省略できるかもしれません。これは仕様だというのでしたら、そうなのかもしれません。ただ、他のcollision関連の不都合も非常に多いため、基本的には壊れているのだと思います。