ホールド式とトグル式に対応したスプリント(ダッシュ)

キャラクターのスプリント(ダッシュ)のチュートリアルです。ホールド式とトグル式に対応しています。

スプリントのホールド式とトグル式

スプリントとは、全速力で走るという意味です。日本ではダッシュと言ったほうが伝わりやすいかとも思います。

ゲームパッドでの操作において、スプリントのホールド式とトグル式の両対応は重要です。

ホールド式 ※ボタン押しっぱなし

昔のゲームは左スティックを押し込みっぱなしでスプリントするゲームが一般的でした。しかし、これは指が痛くなりやすく、好ましい操作ではありませんでした。

トグル式 ※ボタンをタップで切り替え

現在は、走りながら左スティックをタップするとスプリントになるトグル式が一般的です。
左スティックから指を離したり、スプリント中に左スティックをタップすると通常速度に戻ります。
※ゲームによってはスプリント中のタップで通常速度に戻らない仕様のものもあります。

マウス&キーボードでゲームをプレイする人の場合、トグル式の重要性がわかっていない場合も多いかと思います。
実際、Unreal Engineのチュートリアルでも、Shiftを長押しするホールド式のスプリントしか教えていない場合が目立ちます。

PC=Steamでのゲームパッド利用者は増加傾向にあります。ゲームパッド使用率は、2018年で5%だったのが、2024年時点で最大15%にまで増加したとのことです。
Switch、PlayStation、Xboxらの家庭用ゲーム機は、ほぼゲームパッドですから、将来的なマルチ対応を考えても、ゲームパッド操作に対応する意味は大きいです。

特に日本人はゲームパッドの使用率が高いようです。
PC/PS5/PS4/Xbox Series X|Sのマルチプラットフォームである『ファイナルファンタジー14』において、ゲームパッド使用率は日本で77%、北米で40%、欧州で33%とのこと。

環境とソフト

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

入力アクションと入力マッピングコンテキスト

まず入力アクションを作成します。

サードパーソンテンプレートの場合、
ThirdPerson > Input > Actions にある、IA_Jumpを複製して、IA_Sprintにするだけで良いです。

右クリック > 入力 > 入力アクション で作成しても構いません。
↓画像のように設定。

ポイントは、トリガーが2個あるところです。押した時に1回、離した時に1回。離した時にコンプリートにもなります。
もしトリガーが1個だと、押した時にコンプリートになり、ボタンを離したタイミングでの処理ができません。

これを入力マッピングコンテキストに登録します。
サードパーソンテンプレートの場合、
ThirdPerson > Input > にある、IMC_Defaultを開く。

Mappingsの+をクリックして、IA_Sprintを追加。
対応するボタンは、ゲームパッド左スティックボタン左Shiftにしました。

プレイヤーBPの編集

プレイヤーキャラクターのブループリントを編集します。

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

↑入力を変数化する

キャラクターが前進しているかどうかを判定するために、左スティックの↑が入力されているかどうかの値を変数にしておきます。

イベントグラフに最初から配置されている「Movement Input」のAction Value Yを変数化するだけです。

ノードを組む

・Action Value Yの線のから線を伸ばして、変数へ昇格させるだけです。
変数名はMoveForwardにしました。
【変数】MoveForward – Float
この値が0より大きければ、左スティックが↑に倒されていることになります。
現状、カニ歩きや後退はできませんから↑方向の入力判定は不要なのですが、カニ歩きや後退ができるようになった時のために、↑方向の入力判定も入れています。
変数の作成

4つの変数を作成します。

  • NormalSpeed – Float
    通常時のプレイヤーキャラクターの最高速度です。
    デフォルト値は500にしておきます。
  • SprintSpeed – Float
    スプリント時のプレイヤーキャラクターの最高速度です。
    デフォルト値は800にしておきます。
    800は速すぎると思いますが、テストプレイでわかりやすくするために速くしています。
  • IsSprintToggle? – Boolean
    操作方法がホールド式かトグル式かの設定です。
    これがTrueならトグル式になります。
  • SprintMode – Boolean
    プレイヤーキャラクターが通常時かスプリント時かを管理する変数。
    これがTrueならプレイヤーキャラクターはスプリント状態です。
    デフォルト値はFalseです。
イベントグラフの編集
ノードを組む
>>BP_Player: Sprint posted by Hummerkey | blueprintUE

・右クリック > カスタムイベントを追加 でSprintというカスタムイベントを追加します。
これは最高速度が400以下になったらスプリントモードを解除するためのものです。
400を超えている場合、ブランチがFalseになり、Delay(0.1)の後に再びSprintに繋げています。

テストプレイ

BP_ThirdPersonCharacterの変数であるIsSprintToggle?のデフォルト値で、ホールド式かトグル式かを設定します。
最終的には、各々のゲームオプションに組み込みましょう。

ホールド式の場合、左スティックを押し込んでいる時だけスプリントします。

トグル式の場合、左スティックをカチッと1回押すだけでスプリント状態が継続します。
反転しようとしたり停止しようとすれば、速度が400以下になりますからスプリント状態が解除されます。
もしくはスプリント中に左スティックをカチッと押せばスプリント状態が解除されます。

その他メモ

    • スタミナ消費を入れる場合、Sprint ModeがTrueになった時にスタミナ消費イベント開始、Sprint ModeがFalseになった時にスタミナ消費イベントのストップ。
      トグル式とホールド式のそれぞれセット Sprint Mode (True)の後にSet Timer by Function Nameを入れて、Function NameにSprintTimerと入力。SprintTimerというカスタムイベントを追加して、スタミナ消費のノードを組みます。
      そしてセット Sprint Mode (False)の後にClear and Invalidate Timer by Function Nameを入れます。Function NameにSprintTimerと入力。
    • スプリント時のアニメーションを入れたいところです。
      SprintModeの変数で管理していますから、これをアニメーションブループリントに送って、ブレンド Poses by boolで切り替えるようにすれば良いです。

コメント

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