キャラクターのセットアップ

Unreal Engine で基本的なキャラクターやスケルタルメッシュをセットアップする方法の概要です。

Character

どのようなゲー プロジェクトやゲーム ジャンルにおいても、背景を動きまわるアニメートされたキャラクターは必ず必要になります。たとえば、プレイヤーが制御するキャラクターだったり、何らかの方法でワールドとインタラクションする AI 駆動のエンティティなどです。とにかく、ワールドで適切にアニメートできるように、こうしたキャラクターをセットアップする方法を理解しなければなりません。このドキュメントの目的は、そうした方法の概要を示すことです。個々の詳細については専門的ドキュメントとサンプルを紹介します。ここでは、プレイヤーが何らかの制御をするキャラクターを作ります。

このページでは、ブループリントを使って可能な様々なスクリプティング操作を参照します。ブループリントで可能なことは、C++ でも可能です。ブループリント ビジュアル スクリプティングだけを使用することにこだわる必要はありません。最後のセクションでは、C++ とブループリントの両方のセットアップを示す機能別サンプルへの参照を掲載します。

Playable Owen Character の例は、セクション 1.10 の「アニメーションの機能別サンプル」を参照してください。

ワークフローの概要

以下は、UE でキャラクターをセットアップするための主なワークフローです。

  1. 3ds Max や Maya などのサードパーティーのデジタル コンテンツ クリエーション (DCC) パッケージを使用してアセット (スケルタルメッシュ) やアニメーションを作成します。

  2. スケルタルメッシュやアニメーションを UE4 にインポートします。新規スケルタルメッシュに対して新規スケルトン アセットを作成する、または同一または類似のスケルタルメッシュに対して既存のスケルトン アセットを再利用します。

  3. プレイヤーからの入力を処理するには、PlayerController スクリプトまたはブループリントを作成します。

  4. キャラクターやポーンのスクリプト、またはブループリントを作成して入力をパースして、キャラクターの実際の動き (骨格アニメーションではなく) を制御します。

  5. キャラクターの Animation ブループリントを構築します。

  6. カスタムの PlayerController とその他のカスタム スクリプト アセットを利用した GameMode スクリプトまたはブループリントを作成します。

  7. ゲームをプレイしてください。

一般的に上記のステップでは、うまく機能させるために幅広いサブステップがさらに必要になります。このリストはフローについての一般的な考え方を示したものにすぎません。次のセクションでは、こうした各ステップが実際に持つ意味とその適用方法について詳しく説明します。

アート アセットを作成する

Art Assets

色々な意味で、アート アセット作成は、キャラクターの制作プロセスで最も難しい部分です。通常、実際に Unreal Engine で作業する前に、デザイン、モデリング、表面処理、リグ構築、アニメーションなどにかなりの時間を費やします。キャラクターのデザインやアニメーションの微妙な感覚の違いまでは指導できませんが、こうした工程を支援するツールが提供されています。

スケルタルメッシュをインポートする

CharacterViewport.png

詳細は「FBX をインポートする」と「スケルタルメッシュ」を参照してください。

スケルタルメッシュを UE に適切にインポートすることは、アニメートしたキャラクターを作成するうえで重要なステップです。Unreal Engine には、インポート プロセスを高速化する様々なオプションを持つ堅牢なインポート システムがあります。

Player Controller を作成する

Player Controller

Player Controller はプレイヤーからの入力をパースし、キャラクターを動かすイベントにすることを主な目的とする特殊なタイプのスクリプトまたはブループリントです。例えば、コントローラーのアナログ スティックを上方に動かすとイベントを発生させて、それがキャラクターを画面上で前進させるように制御します。

PlayerController は Unreal Engine 内に既に存在するクラスです。エディタでは、PlayerController を親クラスとして新規ブループリントを作成できます。その後、これを使用してプレイヤーからの入力で発生する独自のイベントをセットアップできます。

たとえば、カスタムのブループリント、PlayerController では、エディタ内で新規プロジェクトを開始し([File] > [New Project])、Blueprint Top Down テンプレートをチェックアウトします。ブループリント ベースのテンプレートはすべて何らかの PlayerController (デフォルトの Player Controller または Player Controller Blueprint) を含みます。しかし、Player Controller を使用したカスタム アプリケーションを見たい場合は、Blueprint Top Down テンプレートが最も簡単です。

新規プロジェクト内では、クラスビューア のフィルタをオフにして、クラスビューア で PlayerController を検索することができます。このアセットをダブルクリックするとアセットが開き、使用しているセットアップを確認できます。

新規プロジェクトを作成し ([File] > [New Project] の順序で)、C++ Top Down テンプレートを選択することで、PlayerController を C++ スクリプトで見ることもできます。

Pawn または Character ブループリントを作成する

Character Blueprint

PlayerController のセットアップが完了すると、プレイヤーからの入力をシステムで処理することができるようになります。しかし、こうした入力を画面上でキャラクターを動かせるようにする変換する必要があります。つまり、こうした入力をアクションに変換する (すなわちパースする) 必要があります。ここで Pawn クラスまたは Character クラスが関わってきます。

Pawn または Character を選択する

ここでは Pawn または Character の 2 つのクラスがあります。この 2 つは両方とも、プレイヤーまたはインゲームの AI によって制御されるゲーム内のエンティティに対して使用されます。主な違いは、Character クラスは、Pawn クラスの拡張であり、プレイヤーの物理面、特定メッシュのサポート、プレイ可能なインゲームのキャラクターを作成する際に必要な処理の一般的なタイプを追加します。ここでは、Character クラスを使用します。AI によってシーン内を動くようにする単純なエレメントでは、一般的にポーンを使用する必要はありません。

Character クラスのセットアップ

Character Class Setup

Character クラスは PlayerController からトリガーされるイベントで開始し、スクリプト (ブループリントのビジュアル スクリプト処理を含む) を使用し、こうした入力で実際に何を行うか、キャラクターを制御するためにどのように入力を使用するかを制御します。例えば、PlayerController はコントローラー上でアナログ スティックを上方向に動かす基本的なイベントを作成する場合、Character クラスがそのイベントを受け取り、それを使ってキャラクターを前方向に動かします。

Character クラスは、ゲームプレイ中にプレイヤーが目にする物の基本となるスケルタルメッシュへの参照も保持します。一人称視点のゲームの場合、これは多くの場合、単に宙に浮いているアームですが、フルボディが背景に適切にシャドウをおとす必要があればボディ全体の場合もあります。三人称視点のゲームの場合、メッシュはキャラクターを表現するスケルタルメッシュになります。

一般的に、キャラクターの動きは、動きを物理形状 (通常はカプセル) に適用することによって処理されます。この動きは MovementMode とも一致します。これはキャラクターが何をしているかを追跡するために使用する数値です (すなわち、歩く、走る、落下する、泳ぐなど)。この情報は後に、スケルタルメッシュで再生するアニメーションを操作するために使われます。

カスタムのブループリント Character クラスの場合、新規プロジェクトをエディタ内で開始し ([File] > [New Project])、次に、First Person または Third Person のいずれかの Blueprint テンプレートを選択します。すべてのブループリント ベースのテンプレートには、何らかのキャラクターが含まれます。しかし、First Person または Third Person のいずれかのブループリント テンプレートをお勧めしています。これは、全体的に単純であることと、こうしたジャンルが一般的に使用されているためです。

新規プロジェクト内で、クラスビューア で Character を検索し、ゲーム フォルダ内で、ブループリントでフィルタリングできます。このアセットをダブルクリックするとアセットが開き、使用しているセットアップを確認できます。

新規プロジェクトを作成し([File] > [New Project])、First Person Code テンプレートまたはThird Person Code テンプレートを選択することで、Character を C++ スクリプトで見ることもできます。

Animation ブループリント

Animation Blueprint

アニメーションをキャラクターと連携させるほとんどの煩雑な作業は Animation ブループリントで行います。

Skeletal Mesh アクタがワールドでどのように動くかを Character ブループリントで定義したら、Animation ブループリントでこうした動き (速度など) に基づいて特定のアニメーションの割り当てを開始できます。

Animation ブループリントは、キャラクターのセットアップで威力を発揮します。Animation ブループリントにすべてのデータが入ってきて、スケルタルメッシュに適切なアニメーションを実行させるようにします。Animation ブループリントとそのパワーを十分に理解するためには、以下を含む知っておくべき多様なアニメーションアセットがあります。

上記は、ごく一部にすぎません。「Animation ブループリント」および First Person テンプレートや Third Person テンプレートなどの機能別サンプルにあるいくつかの Animation ブループリント、Content Examples プロジェクト内にあるものを参照するとよいでしょう。

キャラクターの動きを定義する Animation ブループリントを作成したら、それをCharacter ブループリントの Mesh Component の下にある Anim Blueprint Generated Class プロパティに割り当てる必要があります。各スケルタルメッシュが複数の Animation ブループリントを持つ場合があり、Character ブループリントは、必要なアニメーションと変数データを送る Animation ブループリントを知っておく必要があるため、この割り当ては必要です。

GameMode のセットアップ

GameMode Setup

GameMode はゲームを定義するために使う特殊なクラスです。一般的に、ゲームの必須クラスがどのようなものになるかを定義するために使用するプロパティを単に集めたものになります。以下はセットアップする主なプロパティです。

  • Game Session Class - ログイン認証とオンライン ゲーム インターフェースの処理を行るクラスです。

  • Game State Class - ゲームをどのようにプレイするかに関する特殊なルールやセットアップを制御しますが、本ドキュメントでは取り上げません。

  • Player Controller Class - インゲームのキャラクターでセットアップしたカスタムの PlayerController を保持します。

  • Player State Class - 関連するプレイヤー情報をすべてのクライアントに複製するための特殊なルールを定義します。

  • HUD Class - これは作成される特殊なヘッドアップ ディスプレイ (HUD) ですが、このドキュメントでは扱いません。

  • Default Pawn Class - インゲームのキャラクターに対してセットアップする Character クラスを保持します。

  • Spectator Class - アクションを見ているだけのスペクテーター (観戦者) すなわち受動的プレイヤーを制御するために使用する特殊なクラスを保持します。これらは本ドキュメントでは取り上げません。

  • Replay Spectator Class - 再生中にスペクテーター (観戦者) を制御するために使用する特殊なクラスを保持します。これらは本ドキュメントでは取り上げません。

キャラクターをテストするには、最低限デフォルトの Pawn クラスと PlayerController クラスのプロパティをセットアップする必要があります。

ワールド設定

World Settings

GameMode を設定したら、カスタムのキャラクターとプレイできるようにする最後のステップでは、現在のレベルが GameMode を使用していることを確認します。この確認は、 [World Settings] タブを使用して行います。このタブは、メイン ツールバーの上にある [Settings] ボタンからアクセスできます。

[World Settings] 内で GameMode Override を自分の GameMode のクラス名に設定したことを確認します。確認したら、新しいキャラクターを保存し、テストする用意が整います。

Game Mode Settings

概要

セットアップのフローの概要は以下のとおりです。

  • Level の World Settings を使って、どの GameMode を使用するかを設定します。

  • GameMode はどの Pawn (Character) クラスおよびどの PlayerController クラスがゲームをプレイするために必要であるかを指定します。

  • Character クラス:

    • FBX 経由でインポートしたスケルタルメッシュを含むようにします。

    • PlayerController クラスからのデータを取り込み、動き (アニメーションではありません) に変換します。

    • どの Animation ブループリントを使用してスケルタル アニメーションを動かすかを Mesh コンポーネント内に保存します。

  • Animation ブループリント

    • Character クラスのデータをイベントグラフに取り込みます。

    • こうしたデータを使ってステートマシン、ブレンドスペース、その他のアセットを操作します。

    • こうしたアセットは、アニメーション シーケンス (FBX ファイルからスケルタル アニメーション データ) を使用してキャラクターをアニメートします。

  • Animation ブループリントの最終結果がスケルタルメッシュに適用されます。インゲームのキャラクターがアニメートするのを見ることができるようになります。

同梱サンプル

このエンジンには、こうしたセットアップがどのように行われるかを確認する、または自分で試すためのいくつかのサンプルがあります。独自のゲームを作るために使用できる基本プロジェクト ジャンルであるテンプレートと、Epic Games のアーティストと技術者が制作した構成済みの機能別サンプルが含まれています。

テンプレート

Templates

Unreal Engine で新規プロジェクトを作成する場合 (File > New Project)、テンプレートを選択するオプションがあります。これらは実質上、独自の GameMode、Character ブループリント、 Animation ブループリント、およびこのドキュメントで取り上げたあらゆるアセットを使用します。単純かつ明確にするために、First Person (一人称視点) または Third Person (三人称視点) のテンプレートを確認することを強くお勧めします。

こうした各テンプレートは、コード形式またはブループリント形式で利用することができます。これは、慣れ親しんでいる方法で開発することを選択できるようにしたものです。プログラマーならば、おそらく Code テンプレートを使用するでしょう。アーティスティックなデベロッパーならば、Blueprint テンプレートが使いやすいかもしれません。この 2 つは相互排他的ではありません。新しい Blueprint クラスを Code Template のプロジェクトに追加したり、コードのクラスを Blueprint テンプレートのプロジェクトに追加することができます。

機能別サンプル

Content Examples

Content Examples (機能別サンプル) は、Epic Games のアーティストと技術者がデザインした分野別のコンテンツです。こうしたコンテンツは、ContentExamples という名前のプロジェクト内にあり、マーケットプレイス 経由でダウンロード可能です。特に重要なのは、「Maps」フォルダー内にある Animation マップです。これは、キャラクター上のスケルタルメッシュのアニメーションの様々な用途を示しています。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル