横スクロールゲームの基本設定

横スクロールゲームのための、キャラクターとカメラ設定。

環境とソフト

  • Unreal Engine 5.5.1
    サードパーソンテンプレート

カメラアクタの作成と編集

ブループリント クラス > アクタ
名前: BP_Camera
・新規作成。

横スクロールゲームにおいては、カメラアクタとプレイヤーブループリントは分けた方が都合が良いです。

コンポーネントに、
スプリングアームコンポーネントを追加。名前をCameraBoomにします。
その下にカメラコンポーネントを追加。

詳細設定

コンポーネントのCameraBoomを選択し、その詳細の
トランスフォーム > 回転Zを90.0にする
カメラがプレイヤーキャラを横から撮ります。
※Zを-90.0にすると、プレイヤーキャラクターが反転する時、お尻を画面に向けて反転します。一般的には顔を画面に向けますので、Zは90.0にしています。
トランスフォーム > 回転 をクリックして「ワールド」を選択。

カメラ > Target Arm Length を600にする
カメラが遠くなります。
カメラを寄らせる場合は値を小さくします。

カメラコリジョン > Do Collision Test のチェックを外す
カメラが他のオブジェクトと衝突しなくなります。

カメラセッティング > Use Pawn Control Rotation のチェックを外す

変数の追加

【変数】
FollowTarget – キャラクター(オブジェクト参照)
└「インスタンス編集可能」と「スポーン時に公開」にチェックを入れる。

関数の追加 UpdateCameraPos

関数を追加します。
名前: UpdateCameraPos

プレイヤーキャラクターに対してカメラを追従させるものです。

ノードを組む
>>BP_Camera: UpdateCameraPos posted by Hummerkey | blueprintUE

・Transformを分割する時は、ピンで右クリックして「構造体ピンを分割」。
・乗算(*)のピンをFloatに変更する時は、ピンで右クリックして「浮動小数点数(単精度)へ」を選択する。
【変数】LockHeight – Boolean
選択するのIndexをBooleanにして、ワイヤーを伸ばして変数へ昇格
VInterp ToのInterp Speedは、カメラ追従の遅れ具合を設定するもの。値が大きいほど素早く追従するのですが、0は遅れがなくなります。8ぐらいが丁度いい遅れ具合。
イベントグラフの編集
ノードを組む

プレイヤーBPの編集

サードパーソンテンプレートの場合、
ThirdPerson > Blueprints > にある、BP_ThirdPersonCharacterを開く。

コンポーネントの編集

まずCameraBoomとCameraを削除しましょう。

■キャラクターのY軸ズレを防止する
プレイヤーキャラクターがアニメーションを再生したり、オブジェクトと接触すると、Y軸(奥/手前)の位置がズレてしまいます。
横スクロールですからY軸は固定したいので、その設定をします。

コンポーネントのCharacter Movementを選択し、その詳細の
プレナームーブメント > Constrain to Plane にチェックを入れる
プレナームーブメント > プレーンコンストレイント軸設定 をYにする
これらの設定によってY軸が固定されます。

※Plane Constraint NormalのYはプレーンコンストレイント軸設定をYにすると自動的に1.0になります。

■キャラクターの反転速度を速くする
右を向いているキャラクターを左に向かせる時、デフォルト設定ですと反転するのに時間がかかります。

コンポーネントのCharacter Movementを選択し、その詳細の
キャラクタ移動(回転設定) > Rotation RateZを720にする
これで反転が速くなります。さらに速くしたければ1000~2000でも構いません。

  • ジャンプのふんわり感を軽減したい場合、
    キャラクタームーブメント(一般設定) > Gravity Scale
    デフォルト値は1.75。3にすれば速く落ちる。
  • キャラクターの加速を遅くしたい場合、
    キャラクタームーブメント(一般設定) > Max Acceleration
    デフォルト値は2048。1024にすれば加速が遅くなる。
  • ジャンプ力を上げたい場合、
    キャラクタームーブメント: 跳躍 /落下 > Jump Z Velocity
    デフォルト値は700。1200にすれば高く飛ぶ。
  • ジャンプ中に左スティックでコントロールするには、
    キャラクタームーブメント: 跳躍 /落下 > Air Control
    デフォルト値は0.35。1~5で制御しやすくなるが、Gravity ScaleとJump Z Velocityの設定次第で操作感が大きく変わります。
イベントグラフ編集

■カメラ操作を削除
サードパーソンテンプレートに最初からあるCamera Inputの欄を削除します。

■カメラアクタと連携する

ノードを組む
UE5.5ではイベント BeginPlayが最初は未使用になっているので、配置して繋げてください。

クラスからアクタをスポーンしますを配置してBP_Cameraを呼び出し、カメラ設定を変更しています。

■入力と移動を合わせる
カメラの向きを変えたため、ゲームパッドの上下左右の入力と、キャラクターの移動方向が一致しない状態です。上を入力すると右に進み、右を入力すると下に進みます。

ノードを組む
サードパーソンテンプレートに最初からあるMovement Inputの欄を編集します。

・Movement InputのLeft/Rightは削除します。
IA_MoveAction Value Yのワイヤーは削除します。
Action Value XのワイヤーをForward/BackwardのAdd Movement Inputに繋げます。

テストプレイ

テストプレイすると、右を入力するとキャラクターは左に移動してしまいます。

■PlayerStartの向きを変える
PlayerStartの回転のZを180にします。
ゲームは基本的に右に進みますから、PlayerStartも右に向けるという具合。これによって入力操作の反転も直ります。
ゲームは右に進み、ワールド座標的には-X方向に進みます。
奥が+Y、手前が-Yです。
Levelを作成する時、座標の把握とPlayerStartの向きを理解しておく必要があります。

コメント

タイトルとURLをコピーしました