VRゲーム開発 01 移動操作とカメラ操作の設定

VRゲーム開発で最初にやっておきたい移動操作とカメラ操作の設定。

ヴァーチャルリアリティテンプレートの初期設定は、左スティックでカメラ操作、右スティックを上に倒してテレポート移動です。これは現在のVRゲームのスタンダードとは言えず、操作しにくいですから変更します。
・左スティックで移動
・右スティック左右でカメラ操作、上でテレポート移動

オプションも加えます。
・カメラ操作をスナップかスムーズに切り替える
・前進時にカメラの方向に進むかどうか

VRPawnの親クラスをCharacterにする

VRTemplate > BlueprintsにあるVRPawnを開く。

クラス設定 > 親クラスをCharacterにする。
※デフォルトはPawnです。CharacterよりもPawnの方がシンプルさと柔軟さがあるため、VRゲームではデフォルトがPawnになっているようです。
UE公式サイトで「Character は、歩行能力を持つ特別な種類のポーンです。」と書かれており、VRゲームでも歩行させるならCharacterにした方が使いやすいのかと思います。非VRゲームのやり方がそのまま使えるのも強みです。
VRゲームは歩行しないゲームも多いですから、その場合はPawnが適していそうです。Pawnのままでも別のノードを使えば歩行はできますけどね。

PawnからCharacterになった事で視点が高くなっています。
Capsule ComponentのCapsule Heightを小さくすれば視点も低くなります。

カメラ操作を右スティックに変更&スムーズターン追加

IMC_Default

VRTemplate > Input > にあるIMC_Defaultを開く。
Mappingsの中のIA_Turnを開く。
「Oculus Touch (左)サムスティックのX軸」を「Oculus Touch (右)サムスティックのX軸」に変更するだけでカメラ操作が右スティックの左右になります。
他3つも(左)から(右)に変えておきましょう。

VRPawn

VRTemplate > BlueprintsにあるVRPawnを開く。

VRPawn (Self)を選択し、詳細のポーン > Use Controller Rotation Yawのチェックを外す。

ノードを組む
ヴァーチャルリアリティテンプレートに最初からあるIA_Turnに追加します。

【変数】ApplySmoothTurn – Boolean
新規作成。TrueかFalseかでスムーズターンかスナップターンかに切り替え。デフォルトはFalse(スナップターン)が無難でしょう。
【変数】CameraSpeed – Float
乗算するから変数へ昇格。スムーズターン時のカメラのスピードです。デフォルト値は1にしています。
Vectorピンは右クリックして構造体ピンを分割するとX軸Y軸Z軸に分かれます。

左スティックで移動

IA_MoveをIA_Teleportに名前変更

VRTemplate > Input > ActionsにあるIA_MoveをIA_Teleportに名前変更します。

IA_Moveを作成

コンテンツブラウザで右クリックして入力 > 入力アクション
名前をIA_Moveにする。

IA_Moveを開く。
Value TypeをAxis2D (Vector2D)にする。
Modifiersを+(追加)し、Dead Zoneを選択。値はデフォルトのまま。

IMC_Defaultに追加

VRTemplate > Input > にあるIMC_Defaultを開く。
MappingsにIA_Moveを追加。
各デバイスに(左)サムスティックorトラックパッドの2D軸を割り当てる。

VRPawn

VRPawnを開く。

ノードを組む

【変数】MovingTowardTheCamera – Boolean
新規作成。前進時、カメラの方向に進むかどうかのオプションです。前進しながら右を向くと、その方向に進むという具合。デフォルトはTrueの方がいいかもしれません。カメラに向かわないシステムの場合、自分自身の向きとVROriginの向きがズレる事があり、スティックを真上に倒して斜め前に進むみたいな状態になる場合もあります。デフォルトで搭載されている視点リセットで修正できますし、どこかで定期的に視点リセットを入れるシステムにすれば良いですが、カメラに向かう方が安定感があります。
・位置ズレはテンプレートに最初からあるWidgetMenuのRest Orientation and Positionで修正できます。VRPawnのイベント BeginPlayの後にDelay0.5→Rest Orientation and Positionを繋げばスタートでの位置ズレは修正できます。
・Action Valueで右クリックして構造体ピンを分割するとX軸Y軸に分かれます。
キャラクターの移動速度はCharacter Movementコンポーネントの詳細のMax Walk Speedで変更できます。

基本ができた

VRゲームは左スティックで移動、右スティックでカメラ操作という仕様が多いです。ゲームによっては右スティック:上でテレポート移動。
まずこの基本通りにできて満足です。

そして、カメラ操作はスナップとスムーズで切り替え可能、前進時にカメラの方向に進むかのオプションというVRゲームによくあるオプションも追加できました。

今後の注意点として、Capsule ComponentやMeshのコリジョンと、手に持った物のコリジョンとの衝突は気をつけましょう。「ブロック」同士になっていると、前に進もうとしても持っている物のコリジョンと衝突して変な方向に勢いよく進みます。

コメント

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