Unreal Engineトップへ戻る

本章での達成目標は、ゲームパッドなどの入力デバイスを用いて、キャラクターとのインタラクションを実現することである。

用語一覧

入力イベント

  • 入力操作があったときに呼び出されるイベント。Tickイベントのように常に発生しているのではなく、要求に応じて起動する。以下の二つがある。
  • デジタル入力イベント
    on、offの二つの状態のみの入力を扱うイベント。キーボードからの入力などが該当する。
  • アナログ入力イベント
    多段階の状態がある入力を扱うイベント。アナログスティックから行われることが多い。

入力マッピング

  • ゲーム内でのイベントを名前に紐づけ、入力デバイスのボタンやスティック(ハード)とゲーム(ソフト)間では名前で関連性を持たせる方法。次のような利点がある。すなわち、
     ○1つのロジックで複数の入力機器に対応できる。
     ○移植性が高い。
     ○仕様変更にも強い。
     ○キーコンフィグ、ボタンコンフィグ実装の対応が容易。
     ○C++やブループリントが読みやすくなる。
     ○デジタル入力を仮想アナログ入力として扱ったり、その逆も可能。
    ハードと名前を関連付けることを、割り当て(マッピング)をするという。以下の2種に大別できる。
  • アクションマッピング
    デジタル入力を扱う場合の設定。「押したとき」と「離したとき」にイベントが呼び出される。
  • 軸(Axis)マッピング
    アナログ入力を扱う場合の設定。

PawnとContoroller

  • プレイヤーによって操られるキャラクターをPawnと呼ぶ。プレイヤーが人間であるあるかAIであるかは問わない。ContorollerはPawnに対して入力を行う仮想の媒体である。

入力マッピングの設定

イベントを作る前にその名前を設定しておく。

  1. ツールバーから[設定]>[プロジェクト設定]と操作し、ダイアログの左メニューから[Input]を選択。

ペーパーニンジャのダッシュ

  1. [Action Mappings]の右横にある[+]アイコンをクリックして設定欄を追加し、「Sprint」と入力する。
  2. 「None」と書かれているボックスをクリックし、リストから[キーボード]>[左Shift]を選択。検索欄に「shi」まで打ったら出てくる。
  3. アクション名(今回は「Sprint」)の右横にある[+]アイコンをクリックしてマッピング設定欄を増やし、[ゲームパッド]>[ゲームパッドAボタン][ゲームパッドBボタン]を割り当てる。それぞれ検索欄に「A」「B」で出てくる。

ペーパーニンジャの移動とカメラの回転

  1. まず、カメラの移動からマッピングする。[Axis Mapping]の右横にある[+]アイコンをクリックして設定欄を追加し、「LookUp」と名前を付ける。
  2. 「Sprint」にキーアサインした時と同様に[マウス]>[マウスY軸]、[ゲームパッド]>[ゲームパッド右サムスティックY軸]を割り当てる。両者とも検索に「Y」と打てば出てくる。
  3. 1.2.と同様にして新しい設定欄を増やし、「LookRight」と名付けて[マウス]>[マウスX軸]、[ゲームパッド]>[ゲームパッド右サムスティックX軸]を割り当てる。両者とも検索に「X」と打てば出てくる。
  4. 次に、キャラクターの移動を設定する。上記の手順で新しい設定欄を増やし、「MoveForward」と名付けて[ゲームパッド]>[ゲームパッド左サムスティックY軸]を割り当てる。
  5. 次に、キーボードからのデジタル入力をアナログ入力に振り替えて割り当てる。
  6. 「MoveForward」の右横の[+]アイコンをクリックして設定欄を増やし、[キーボード]>[W]を設定。これだけでは押したときに「1.0」、離したときに「0.0」を返す状態のため、キーボードからは一方向にしか進めない。
  7. そこで、設定欄を追加し、[キーボード]>[S]を割り当て、それの[Scale]設定値を「-1」にする。
    上記のとおり、キーボードのキーは押したときに「1.0」を返す。そこでその値に「-1」をかけることで値を逆転させ、アナログスティックと同様の入力をキーボードから行えるようにする。
  8. 「MoveForward」の割り当てと同様にして「MoveRight」を設定する。割り当てるキーは[ゲームパッド]>[ゲームパッド左サムスティックX軸]、[キーボード]>[D][A]。[A]の[Scale]設定を「-1.0」にする。

入力をとってキャラクターを移動させる

  • 前後移動
  1. コンテンツブラウザで、[コンテンツ>Maps>Test]フォルダ内にある「Test_Player_Movement」をダブルクリックし、テストマップをロードする。
  2. コンテンツブラウザで[コンテンツ>Blueprints]フォルダにある「PNPlayerPawn」をダブルクリックしてブループリントエディタを開き、[Event Graph]のタブをクリックしてグラフ編集画面に切り替える。
  3. [Tick]ノードと[Add Movement Input]ノードのつながりを切断する。どちらかの実行ピン(白線の始点か終点)の上にカーソルを置き、[Alt]キーを押したガラクリックする
  4. グラフ内の空いてるスペースを右クリックして、[入力]>[軸イベント]>[MoveForward]を選択して新しいイベントノードを設置する。このとき、[入力]>[軸値]>[MoveForward]を設置しないよう注意する。
    設置された[Input Axis MoveForward]のの実行出力ピンと[Axis Value]出力ピンを[Add Movement Input]ノードの対応するピン(同色のピン)に接続する。
    コンパイルしたのち、レベルエディタに戻り、[プレイ]ボタンを押してゲームをテストする。前後移動が実現できていればよい。
  • 左右移動
  1. [入力]>[軸イベント]>[MoveRight]を選択して新しいイベントノードを設置する。
  2. ノードをコピーする。[Add Movement Input]ノードを右クリックし、[複製]を選択。 このとき、ノードのコメントもコピーされるので、削除するか書き換える。
  3. 複製したノードと[MoveRight]のピンを接続する。
  4. 右方向の移動を実現するために[World Direction]入力ピンを「X=0.0、Y=1.0、Z=0.0」に設定する。 コンパイルしたのち、レベルエディタに戻り、[プレイ]ボタンを押してゲームをテストする。左右移動が実現できていればよい。 以上でキャラクターの移動はひとまず完成。次にダッシュを実装する。
  • ダッシュ
    デジタル入力を受け取ってダッシュさせる。ダッシュ状態とはすなわち、通常の移動時よりも最高速度が上昇している状態である。よって、[CharactorMovement]コンポーネントの[Max Walk Speed]の値を変化させることでこれを実現する。
  1. グラフの空いている場所を右クリックして[入力]>[アクションイベント]>[Sprint]を選択してイベントノードを設置。
  2. [コンポーネント]パネルから、[CharactorMovement]コンポーネントをグラフ上にドラッグ&ドロップで設置。
  3. [CharactorMovement]ノードの出力ピンからワイヤーを伸ばし、アクションリストから[変数]>[CharactorMovement]>[Set Max Walk Speed]を選択。これによってパラメータの置き換えが行える[SET]ノードが設置される。
  4. [Input Action Sprint]の[Pressed]実行出力ピンを[SET]ノードの実行入力ピンに接続し、[Max Walk Speed]の入力ピンに「200」と入力する。これで、ダッシュが行われる。
  5. 同じ方法でダッシュから通常の移動速度に戻すしくみをつくる。[Input Action Sprint]ノードの[Released]実行出力ピンから[Max Walk Speed]を「150」に戻す[SET]ノードを接続。
    コンパイルして実行してみる。

Unreal Engineトップへ戻る


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-06-23 (木) 17:12:10 (902d)