🐡

【UE5 備忘録】2Dアクションゲームの作り方(確認用メモ)

に公開

どうも~つぶあんです。
【UE5 備忘録】2Dアクションゲームの作り方

についての確認用のメモ書きです。

プロジェクトをクローン化

  1. UEのランチャーからプロジェクトを右クリック⇒クローンを選択

  2. プロジェクト名を設定

  3. 作成ボタンを押す。
    今後ブランクプロジェクトから頻繁に新規作成する場合は、毎回同じ工程を踏まずに済みます。

  4. エディタの環境設定
    編集⇒エディタの環境設定⇒一般⇒地域&言語⇒国際化から

    ここののチェックを外す。

  5. エディタが重い場合


    重い場合はこの値を変更してみる

テクスチャ設定

  1. インポートした画像を開くとぼやけているので修正
  2. 画像を右クリック⇒スプライトアクション⇒Paper2Dテクスチャ設定を適用をクリック。
  3. 画像を開いて、詳細のLOD⇒Mip Gen SettingNoMipmapsに変更し、テクスチャ⇒詳細設定のFilterNearestに変更。
  4. LOD⇒Texture Groupを2D Pixels(unfiltered)
  5. Compression⇒Compression SettingsをUserInterface2D(RGBA)
  6. 画像の色味がおかしい場合は元の画像ファイルを右クリック⇒プロパティ⇒詳細からビットの深さが24か32であるかを確認

上記の設定を一括で設定できるツールの作成

  1. 適当なフォルダで右クリック⇒エディタユーティリティ⇒エディタユーティリティブループリント⇒Asset Action Utilityを選択。名前:EUB_Asset_TextureSettings
  2. EUB_Asset_TextureSettingsを開く。
  3. 関数を追加。名前をNewPaper2DTextureSettings
  4. 設定したいテクスチャを右クリック⇒スクリプト化されたアセットアクション⇒NewPaper2DTextureSettingsを選択。
  5. このままだとテクスチャ以外にも5のメニューが出てしまうので、クラスのデフォルト⇒右の詳細からアセットのサポート⇒Supported Classesの+を押してインデックス[0]でTexture 2Dを選択。こうすることでメニューをテクスチャの時だけ出るようになる。

スプライトを作成

  1. プロジェクト設定⇒エディタ⇒Paper2D-インポート⇒デフォルトのUnreal単位あたりのピクセルを0.16に設定する。※ドットのサイズを統一できる
  2. 画像を右クリック⇒スプライトアクション⇒スプライトを作成をクリック。

整理

  1. Texturesフォルダ内の不要画像を削除
  2. Texturesフォルダ内のSpriteファイルをSpritesフォルダへ移動
  3. ファイル⇒プロジェクトをZIP圧縮でZIP圧縮してバックアップすると最低限必要なデータになるので整理することができる。

解像度について

テクスチャーは2の乗数の解像度にしてから読み込む。

3D

  1. ファイル⇒新規レベル⇒基本⇒作成
  2. パースペクティブ、ライティングありに変更。
  3. Mapsフォルダに名前を付けて保存する。
  4. プロジェクト設定⇒マップ&モード⇒Default Mapsのエディタのスタートマップゲームのデフォルトマップを先ほど作ったマップに変更する。
  5. BP_Player_2Dを複製。BP_Player_2D_Belt
  6. BP_Gamemode_2Dを複製。BP_Gamemode_2DBelt
  7. BP_Gamemode_2DBeltを開き、Default Pawn Classに5を指定。
  8. ワールドセッティング⇒ゲームモードオーバーライドにBP_Gamemode_2DBeltを指定。

カメラ設定

  1. BP_Player_2D_Beltを開く。
  2. コンポーネントのCameraを選択。
  3. 右の詳細からカメラセッティング⇒Projection ModeをPerspectiveに変更。

スプライトに影を付ける

  1. BP_Player_2D_Beltを開く。
  2. コンポーネントのSpriteを選択。
  3. 右の詳細から、ライティング⇒Cast Shadowにチェックを入れる。
  4. レベルのDirectionalLightを選択して、トランスフォームの回転を変更して影の位置を調整する。※回転:(0,-45,-70)

ライトの影響を受けるマテリアル

  1. 床を複製して日陰を作る。※位置:(-3000,0,1000)
  2. テストプレイで確認するとキャラクターは日陰の状態になっていない。
  3. BP_Player_2D_BeltのSpriteを選択して、右の詳細からマテリアル⇒エレメント0の虫眼鏡をクリック。
  4. MaskedLitSpriteMaterialを選択した状態で3に戻り、矢印をクリック。 ※Lit:光の影響を受ける, Unlit:光の影響を受けない
  5. テストプレイしてみるとキャラクターがライトの影響を受けていることを確認できます。

カメラ位置の修正

  1. SpringArmを選択。
  2. 右の詳細から、カメラ⇒Target Arm Length:1000,Socket Offset:(0,0,200)
  3. ラグ⇒Enable Camera Lag:True, Camera Lag Speed:1.0

手前と奥にも移動可能にする

  1. BP_Player_2D_Beltを開く。
  2. コンポーネントのCharacter Movementを選択。
  3. 右の詳細から、プレナームーブメント⇒Constrain to Plane:false ※Plane Constrant Normalの値が(0.0, 1.0, 0.0)の場合Y移動をさせないという設定になるので、移動できるようにチェックを外す。
  4. 関数:UpdateAnimationを開く。
  5. InputフォルダのActionsフォルダ内で右クリック⇒入力⇒入力アクションを選択。IA_MoveForward
  6. IA_MoveForwardを開いて、Value Type:Axis1D(float)
  7. Inputフォルダ⇒IMC_2DActionを開いてIA_MoveForwardを追加。
  8. +でwキーとsキーを追加。
  9. wキーのModifiersの+をクリックして、Index[0]にNegateを指定。※wがマイナスの値、sがプラスの値

HD-2D

  1. サンプル素材をインポート。
  2. レベルを開く。
  3. ダンジョンのマップチップ素材をダウンロード。
  4. AssetsフォルダのTexturesフォルダにあるテクスチャを右クリック⇒新しいファイルで再インポートをクリック。
  5. ビューポートの背景が反映される。
  6. ワールドセッティング⇒ゲームモードオーバーライド:BP_Gamemode_2DBelt
  7. 確認用でコンテンツの追加ボタンからシネマティック⇒Cine Camera Actor ※(700,3450,110) 被写界深度を調整したい場合は通常のカメラだと調整がしにくいのでCineCameraActorを使う。(映像制作用にカスタマイズされたカメラらしい)
  8. パースペクティブをCineCameraActorに変更
  9. Gキーでアイコンなどを非表示に。
  10. アウトライナーでCineCameraActorを選択。
  11. 詳細のLens Settings⇒最小FStop:0.1
  12. Focus Settings⇒マニュアル焦点距離:スポイト⇒鳥の像をクリック
  13. Current Aperture:0.1
  14. BP_Player_2D_Beltを開く。
  15. SpringArm⇒Target Arm Length:2000
  16. コンポーネントの追加ボタン⇒CineCameraを追加
  17. 古いCameraは削除
  18. CineCameraを選択して右の詳細から、11,12:2000,13を設定
  19. その他に適宜弄ったほうがいい設定として、アウトライナーのPostProcessVolumeを選択して
    Bloom⇒強度
    Lens Flares⇒強度
    カラーグレーディング⇒Global⇒コントラスト

PaperZD > AnimNotify

  1. コンテンツ⇒2DAction⇒PaperZD⇒AnimSequences⇒AS_Player_01_Walkを開く。
  2. 下のタイムテーブルの1の行で右クリック⇒通知を追加⇒New Notify⇒名前付ける。
  3. 上の階層のZDAnimBP_Playerを開くと、左の関数に追加されているので開く。
  4. 通知処理を定義できる。

PaperZD > PaperZDAnimNotify

  1. ブループリントクラス⇒すべてのクラス⇒PaperZDAnimNotify⇒名前をZDanotify_Check。
  2. ZDanotify_Checkを開く。
  3. 左の関数⇒オーバーライド⇒On Receive Notifyを選択。
  4. AS_Player_01_Walk⇒タイムテーブルの1の行で右クリック⇒通知を追加をすると、ZDanotify_Checkが追加されている。
  5. ZDanotify_Checkに変数を追加すると、AS_Player_01_Walk側にも追加されるので色々出来そう。
  6. もう一つのPaperZDAnimNotifyStateは始まりと終わりの通知を受けることができる。武器の振りはじめと振り終わりなど。

Discussion