第9回:ゲームモードで歩き回ろう

こんにちは、スタジオ・デジタルプラスの磯野です。
前回は、Unreal Engine 4 のシーケンサーを使い簡単なムービーを作りました。

今回はパッケージングに向け、ゲームモードを作成し空間を歩き回れるようにしましょう。

Unreal Engine 4 のバージョンは4.21を使用していきます。

ゲームモードを作る

プレイを開始すると、動画のように自分で操作しながら空間内を歩き回れるようゲームモードを作ります。

今回作るゲームモードの操作方法はキーボードとマウスで行います。

前進 W
後退 S
右移動 D
左移動 A
目線移動 マウスのX軸(左右に動かす)

では、始めましょう。
時間短縮のため、一からゲームモードを作成するのはではなく、コンテンツパックを利用します。

「コンテンツブラウザ」の「新規追加」から「機能またはコンテンツパックを追加」を選択。

機能またはコンテンツパックを追加
機能またはコンテンツパックを追加

「プロジェクトにコンテンツを追加」というウィンドウが出てきます。
「サードパーソン」を選び「+プロジェクトに追加」をクリック。

サードパーソンを追加
サードパーソンを追加

サードパーソンを追加したら、これを変更していきます。

00:05 追加したサードパーソンのフォルダ「ThirdPersonBP」の「Blueprints」フォルダを開き、右クリックか ら「ブループリントクラス」を選択。
00:11 ブループリントクラスをクリックすると「親クラスを選択」というウィンドウが出てきます。
00:14 下にある「すべてのクラス」の検索に【archvischaracter】と入力(archでも出てきます)
00:21 検索結果で出てきた「ArchVisCharacter」を選択。
00:29 ブループリントクラスの名前を入力(ここでは〔MyArchVisChara〕とします)

作った〔MyArchVisChara〕をダブルクリックで開きます。

MyArchVisCharaを開く
MyArchVisCharaを開く

左上の「コンポーネントを追加」から「Camera」を選択。

カメラコンポーネントを追加
カメラコンポーネントを追加

ここで一度コンパイルします。

コンパイルする
コンパイルする

次は「ワールドセッティグ」の設定をします。
「ワールドセッティグ」が画面に出ていない時は「メニューバー」の「ウィンドウ」から表示できます。

ワールドセッティグの表示
ワールドセッティグの表示

ワールドセッティグが表示できたらゲームモードを設定します。

00:00 ワールドセッティングのGameMode/GameMode Overrideを「ThirdPersonGameMode」に指定
00:10 Default Pawn Classを先程作った〔MyArchVisChara〕に変更

これでプレイすると〔MyArchVisChara〕でプレイできるようになります。

00:24 実際にプレイします

プレイすると、床を突き抜けてしまいました。

次は、床や壁を突き抜けてしまわないように、コリジョン(衝突)を設定していきます。

コリジョンを作成する

まず現状のプレイヤーに対してのコリジョンを確認してみましょう。

ビューポートの「ライティング」をクリックし「Player Collision」を選択。

プレイヤーコリジョンを表示
プレイヤーコリジョンを表示

これをみると、建物にはコリジョンが無い事がわかります。

では、床や壁にコリジョンをつけていきます。

コリジョンを追加

床のStaticMeshActorを選択し、「詳細パネル」から「StaticMesh」をダブルクリックで開きます。

StaticMeshを開く
StaticMeshを開く

開いたらコリジョンを追加します
メニューバーの「コリジョン」から「ボックス単純化コリジョンを追加」を選択。
床のStaticMeshにコリジョンが追加されました(グリーンのフレームで表示されます)

コリジョンを追加
コリジョンを追加

このままでは床の上にコリジョンが作られることになるので、Pivotアイコン(XYZ軸)をZ軸を下げて床と合わせます。

Z軸を下げて床と合わる

保存して、プレイしてみます。

床を突き抜ける事は無くなりました。

この方法で壁にもコリジョンを作成しましょう。

今回は、プレイヤーが壁を突き抜けたりしないようにする為のコリジョンなので、メッシュに対して正確にコリジョンをつける必要はありません。  

00:39 コリジョンボックスをCtrlを押しながら移動させると複製できます。
コリジョンメニューから再度「ボックス単純化コリジョンを追加」でも増やすことができます。
01:24 今回プレイヤーがジャンプしたりする事は無いので、ドア上部のコリジョンは無くても良いです。

UseComplexAsSimple

少し複雑な形状の物にコリジョンをつけます。階段を例にやってみましょう。

Z軸を下げて床と合わる

この階段のスタティクメッシュの形状をそのままコリジョンに設定することができます。

※この方法は、オブジェクトの面を使用して作られるコリジョンのため負荷が高いです。

スタティクメッシュを開き、「詳細パネル」の「コリジョン」にある「Collision Complexity」を「Use Complex Collision As Simple」に変更。

UseComplexAsSimpleに変更
UseComplexAsSimpleに変更

すると、メッシュと同じ形状のコリジョンが適用されました。

コリジョンの確認はツールバーにある「コリジョン」で確認できます。

コリジョンの確認
コリジョンの確認

一旦、プレイヤーコリジョンを表示して見てみます。

ライティング
ライティング
プレイヤーコリジョン
プレイヤーコリジョン

床と壁にコリジョンがつきました。

家具や2Fへの階段も同じ方法でコリジョンを作成したら完成です。

AutoConvexCollision

今回必要はありませんが、スタンドライトのコリジョンに自動で凸型コリジョンを生成してくれる「オートコンベックスコリジョン」(AutoConvexCollision)を使います。

00:00 スタンドライトのメッシュを開き、メニューバーから「コリジョン」の「オートコンベックスコリジョン」を選択。画面に「凸型分解」というウィンドウが出てきます。
00:13 一旦「適用」して、上手くいかなければ数値を変更して再度「適用」してみてください。
00:17 自動で凸型コリジョンが生成されました。


ここまではUnreal Engine4でコリジョンを作成する方法をご紹介しました。
コリジョンは事前に3ds Maxで作成する事もできますが、ここでご紹介するのは割愛させていただきます。
詳細は、Unreal Engine 4 公式のONLINE LEARNINGで紹介されていますので、そちらをご覧ください。Epic Gamesアカウントを取得すればどなたでも閲覧できます。

DATASMITH PIPELINE(コリジョンについてはClassStructure15.0:Collisionにて紹介されています。日本語字幕付。)


コリジョンが作成できましたので、プレイしてみます。
プレイヤーのスタート位置はレベル上にある「Player Start」を移動させてください。
ブルーの矢印が指している方向が進行方向になります。

Player Startを移動する

プレイヤーの目線が低いですね、スピードや登れる高さ等も調整しないといけませんね。

前半で作った〔MyArchVisChara〕から変更していきます。

キャラクターを調整

まずはキャラクターのカプセルを変更します。このカプセルが作ったコリジョンに衝突します。
〔MyArchVisChara〕を開き「ビューポート」を表示してカプセルをクリック。(青枠のコンポーネントからも選択できます)
「詳細パネル」にある「Shape」の「Capsule Half Height」を【80】にします。

カプセルの大きさ
カプセルの大きさ

カメラの位置もこのままだと低いので、変更します。
ビューポートまたはコンポーネントから「camera」を選択。
「詳細パネル」の「トランスフォーム」にある「位置」のZ値を【70】に。

カメラの高さ
カメラの高さ

次に、キャラクターの移動速度などを変更します。
ビューポートまたはコンポーネントから「Character Movement」を選択。
「詳細パネル」を変更。今回は以下のようにしました。

Character Movementの設定
Character Movementの設定

この状態でもプレイして歩き回れますが、今回は「キーボード」と「マウスのX軸」だけでキャラクターを操作するので、「マウスのY軸」は使わないように設定します。

「メニューバー」から「編集」の「プロジェクト設定」を開きます。
「プロジェクト設定」の「インプット」を選択し、「Axis Mapping」の「Look Up」「マウスのY軸」を削除します。

Look Upを削除
Look Upを削除

プレイしてみましょう。

今回はゲームモードとコリジョンを作り、プレイできるところまで出来ました。

次回は、プレイ中にドアを開け閉めしたり、シーリングファンを回したり等のブループリントを組んでいく予定です。

最後まで読んでいただきありがとうございました。