Version: 2023.1
言語: 日本語
3D ゲーム開発クイックスタートガイド
高度なベストプラクティスガイド

3D ゲームの作成

3D ゲームを作成するには、Unity プロジェクトを設定 し、以下の順序で関連する概念を学んでください。

基礎

ゲームオブジェクト は、Unity の基本的なオブジェクトで、キャラクター、小道具、風景などを表現します。ゲーム内のすべてのオブジェクトはゲームオブジェクトです。

ゲームオブジェクトは、シーン と呼ばれる 3D 環境の中に存在します。シーンはゲームのレベルと考えることができますが、メニューやゲーム終了時のクレジット、まったく別のものを表すこともあります。

ゲームオブジェクトの動作は、コンポーネントと呼ばれる機能ブロックによって定義されています。ゲームオブジェクトに複数のコンポーネントをアタッチすることができます。以下のコンポーネントは、3D ゲームでは基本です。

  • Transform: このコンポーネントは、シーン内の各オブジェクトの Position、Rotation、Scale を決定します。すべてのゲームオブジェクトに Transform があります。
  • Mesh Filter: このコンポーネントは、3D ゲームオブジェクトの形状を定義します。
  • Mesh Renderer: このコンポーネントは、メッシュフィルターによって定義された 3D 形状がどのように見えるかを定義します。
  • カメラ: 特別に設定されたゲームオブジェクトで、世界をキャプチャしてプレイヤーに表示します。
  • リジッドボディ: リジッドボディは、ゲームオブジェクトが重力や衝突などの物理システムと相互作用することを可能にします。このガイドの 物理演算 のセクションを参照してください。
  • Colliders: このコンポーネントは、物理的な衝突を目的とした 3D ゲームオブジェクトの形状を定義します。

トップへ戻る

スクリプト

Unity では、スクリプト を使用して、独自のコンポーネントを作成できます。スクリプトを使用すると、ゲームイベントを発生させたり、時間の経過とともにコンポーネントのプロパティを変更したり、ユーザー入力に応答したりすることができます。 Unity は、C# プログラミング言語をネイティブでサポートしています。 ここでは、ゲームでのスクリプトの使い方の例をいくつか紹介します。

  • プレイヤーからの入力を受け取り、その入力に基づいてゲームオブジェクトを移動または動作させる。
  • 関連する勝敗シーンを開く勝敗の状態を設定し、ゲーム全体をループさせる。
  • 他の変数に基づいて、変換、アニメーション、レンダラーなどのゲームオブジェクトのコンポーネントに影響を与える。

Unity でのスクリプトの使い方の詳細については、スクリプトの概要 を参照してください。 スクリプトの基礎を学ぶには、Unity Learn Beginner Scripting コース を参照してください。 より詳細なガイダンスについては、サンプルプロジェクト Create with CodeCreator Kit: Beginner Code を参照してください。

トップへ戻る

3D アセット

モデルとは、オブジェクトを 3 次元で表現したものです。3D ゲームのビジュアルの大半は、キャラクター、相互作用可能なオブジェクト、プレイヤーの周りの世界などのモデルで構成されています。

Probuilder のようなツールを使用して、Unity でモデルを作成することができます。しかし、これらは最終製品ではなく、プロトタイピングに最適です。

より洗練された 3D アセットを最終製品に加えるには、3D モデリングソフトウェアで 3D モデル、マテリアル、テクスチャを作成し、それらを Unity にインポートします。

左:プレイヤーキャラクターの 3D ポリゴンメッシュ。右: マテリアルとともに Unity でレンダリングしたプレイヤーメッシュ
左:プレイヤーキャラクターの 3D ポリゴンメッシュ。右: マテリアルとともに Unity でレンダリングしたプレイヤーメッシュ

3D モデルファイルのインポート

Unity は .fbx モデル形式を使用します。また、他の一般的なネイティブの モデル形式 (例えば、.max, .blend, .mb, .ma) も使用でき、Unity はそれらをインポートした後に .fbx に変換します。

モデル を Unity にインポートして、プロジェクトで使用できます。

メッシュのレンダリング

3D メッシュは、3D モデルの構造的なビルドです。複数のポリゴン形状から構成されています。ゲームオブジェクトに 3D モデルを加えるには、Mesh Filter をゲームオブジェクトに追加します。Mesh Renderer コンポーネントは、シーン内のメッシュをレンダリングします。ゲーム内にモデルを確実に表示するには、Mesh Filter コンポーネントを持つゲームオブジェクト に Mesh Renderer を加えます。

マテリアル

マテリアル は、テクスチャ、色合い、シェーダー など、サーフェスの視覚的な外観に関する情報を組み合わせています。マテリアルは、サーフェスのレンダリング方法を定義するために使用します。

  • テクスチャとは、Unity にインポートするあらゆる 2D 画像ファイルのことです。テクスチャ を使ってメッシュを包み込み、モデルに細かいディテールを追加します。
  • 色合いを使用して、テクスチャの色を変更します。
  • シェーダーは、Unity がゲームオブジェクトを画面上に表示する方法を決定する一連の命令です。シェーダー を使うと、Unity がライティング入力とマテリアルの設定に基づいて、各ピクセルをレンダリングする方法に影響を与えます。

Material Design チュートリアルを参照してください。

トップへ戻る

ゲーム内環境の構築

シーンにモデルと他のアセット加えることによって作成された環境
シーンにモデルと他のアセット加えることによって作成された環境

環境デザインとは、ゲームの舞台となる環境を作成するプロセスです。Unity エディターで環境の設計と構築を同時に行うこともあれば、Unity の外部で環境設計を行い、Unity で構築することもあります。

ゲーム内の環境を構築するには、シーンにゲームオブジェクトを加え、好みやデザインに合わせて配置します。 Unity エディターには、モデルをシーンに手動で配置する以外に、景観をゲームに加えるビルトインの Terrain (地形) 機能が備わっています。エディターでは、複数の Terrain (地形) タイルを作成し、地形の高さや外観を調整し、木や草を追加することができます。詳細は Terrain (地形) の作成と編集 を参照してください。

トップへ戻る

アニメーション

他のプログラムで作成したアニメーションをインポートしたり、エディターで直接アセットをアニメーション化することができます。 3D アニメーションの詳細については、Unity Learn の Introduction to 3D Animation Systems を参照してください。

プレイヤーは静止しているので、アイドル状態のアニメーションを再生しています。
プレイヤーは静止しているので、アイドル状態のアニメーションを再生しています。

アニメーションのインポート

Unity では、アニメーション付きのモデルをインポートする場合、アニメーションクリップをインポート できます。つまり、他のプログラムでモデルをアニメーション化し、Unity でそのクリップにアクセスし操作することができます。

Unity でモデルをアニメーション化する

Animation ウィンドウ を使って、Unity 内で直接アニメーションクリップを作成、修正します。 キーフレームアニメーションを使って、シーン内のゲームオブジェクトに位置、サイズ、回転などの簡単なアニメーションを加えることができます。

アニメーションの制御

アニメーションクリップ の再生を制御するには、スクリプト内で Animator クラスを使って直接呼び出すか、Animator ウィンドウアニメーターコントローラー を作成し、変更することができます。

Animator ウィンドウ を以下に使用できます。

トップへ戻る

グラフィックス

ライティング

シーンにライトを当てて、環境に深みとムードを与え、プレイヤーが作成したゲーム世界を体験しやすくします。 ライティングを設定するには、以下を行います。

  1. ライトを作成します。Hierarchy ウィンドウを右クリックして GameObject メニューを開き、 Light を選択し、シーンに加える Light のタイプを選択します。ライトのタイプ を参照してください。
  2. ライトをシーンに配置します。希望する効果が得られるまで、ライトの色、強度、および配置を調整します。ライトの使用 を参照してください。
  3. ライティングを完成させます。例えば、異なる Light モード を選択したり、クッキー マスクを追加して影を作成することができます。
スポットライトライトで雰囲気のあるライティングに仕上げられたシーン
スポットライトライトで雰囲気のあるライティングに仕上げられたシーン

Unity Learn の Lighting in URP チュートリアルを参照してください。

トップへ戻る

オーディオ

Unity でゲームにバックグラウンドミュージックや効果音を追加することができます。オーディオの概要 を参照してください。サードパーティのソフトウェアを使用してオーディオを作成し、推奨される設定で Unity にインポートします。

トップへ戻る

物理演算

プレイヤーキャラクターには、Physics システムを使用してキャラクターを壁に衝突させる capsule collider コンポーネントが設定されています。
プレイヤーキャラクターには、Physics システムを使用してキャラクターを壁に衝突させる capsule collider コンポーネントが設定されています。

Unity の物理エンジンを使用して、ゲームオブジェクトの相互作用を制御します。これを使って重力や力学のような力を再現し、現実世界での衝突時にゲームオブジェクトがどのように動作するかを定義することができます。また、物理設定を構成して、ゲームのデザインに合うように、現実世界の正確なシミュレーションではない、カスタムの物理を作成することもできます。 Unity の物理エンジンの使い方を学ぶには、Unity Learn の Physics チュートリアル を参照してください。詳細については、ユーザーマニュアルの 物理演算のセクション を参照してください。

ゲームオブジェクトに物理演算を設定する。

  1. ゲームオブジェクトが物理演算システムの影響を受け、重力や衝突などに反応するようにするには、Rigidbody コンポーネントを加えます。
  2. ゲームオブジェクトがシーン内の他のゲームオブジェクトと相互作用できるようにするには、コライダー を使います。例えば、コライダーを持つゲームオブジェクトは、コライダを持つ他のゲームオブジェクトと移動したり、移動させられたりすることができます。
  3. 2 つのゲームオブジェクトが交差するときにコードで関数を呼び出せるようにするには、コライダー を加え、トリガー にします。

トップへ戻る

ユーザーインターフェース

ゲームにメニューやヘルプを追加したい場合、ユーザーインターフェース を設定する必要があります。ユーザーインターフェースを設定するには、Unity UI を使用します。

トップへ戻る

3D ゲーム開発クイックスタートガイド
高度なベストプラクティスガイド