2D ゲームを作成する前に、ゲーム視点とアートスタイルを決定する必要があります。
2D ゲームを作成するには、Unity プロジェクトを設定 し、以下の順序で関連する概念を学んでください。
[# 2D 物理](#Physics)
ゲームオブジェクトは Unity の基本的なオブジェクトで、キャラクター、プロップ、風景などを表現します。ゲーム内のすべてのオブジェクトはゲームオブジェクトです。
ゲームオブジェクトはゲーム内のアイテムを表します。ゲームオブジェクトを配置してレベルをビルドするスペースはシーンと呼ばれます。Unity のシーンは常に 3D です。Unity で 2D のゲームを作成する場合、通常は 3 次元 (Z 軸) を無視することを選択しますが、2.5D のゲームを作成する場合など、特殊なケースで使用することも可能です。
ゲームオブジェクトの動作は、コンポーネントと呼ばれる機能ブロックによって定義されています。以下に示すのは、2D ゲームで基本となるコンポーネントです。
コンポーネントは、C# クラスを UI で表現したものです。スクリプトを使用して、コンポーネントを変更する、コンポーネントを操作する、または新しいコンポーネントを作成することができます。詳細については、スクリプティングのセクションを参照してください。
すべての 2D ゲームにスクリプトが必要です。スクリプトは、プレイヤーからの入力に応答し、ゲームプレイのイベントが必要なときに発生するように制御します。
Unity でのスクリプトの使用方法について詳しくは、スクリプティングの概要を参照してください。Unity Learn の初級者向けのスクリプティングコースも参照してください。
スクリプトはゲームオブジェクトに添付され、作成したスクリプトは MonoBehaviour クラスを継承しています。
スプライトは 2D グラフィックのオブジェクトです。あらゆる種類の 2D ゲームにスプライトを使用します。例えば、主人公の画像をスプライトとしてインポートすることができます。
また、スプライトのコレクションを使用してキャラクターを構築することも可能です。これにより、キャラクターの動きやアニメーションをより自由にコントロールすることができます。
Unity の推奨する設定でスプライトをインポートします。インポートしてスプライトを設定するを参照してください。
スプライトを描画するには、Sprite Renderer コンポーネントを使用します。例えば、スプライトレンダラーを使用すると、スプライトの色や不透明度を変更することができます。
スプライトレンダラーの概要学習チュートリアルを参照してください。レイヤーで編成することによってスプライトのソートを行い、奥行きを感じさせることができます。スプライトはさまざまな方法でソートすることができます。詳細については、スプライトのソートを参照してください。例えば、Y 軸に沿ってスプライトを並べ替えると、高い位置にあるスプライトは低い位置にあるスプライトの後ろに並べられ、高い位置にあるスプライトは低い位置にあるスプライトよりも遠くに見えるようになります。
スプライトのオーバーレイ順序を設定するには、ソートレイヤーを使用します。
スプライトレンダラーでゲームオブジェクトをグループ化し、スプライトをレンダリングする順序を制御するには、ソートグループを使用します。
スプライトアトラスを使用することで、複数のテクスチャを 1 つの結合されたテクスチャとして統合できます。これにより、ゲームが最適化され、メモリが節約されます。例えば、特定のキャラクターや目的に関連するすべてのスプライトをスプライトアトラスに追加することができます。
スプライトアトラスの概要学習チュートリアルを参照してください。
環境設計とは、ゲームのレベルと環境を構築するプロセスのことです。このセクションの環境デザインツールは、あなたのゲームに最も適した方法で組み合わせることができます。例えば、9 スライスのみを使用してトップダウンゲームを作成できます。または、タイルマップと SpriteShape を使用してサイドオンプラットフォーマーを作成することもできます。
9 スライスとは、複数のアセットを用意することなく、1 つの画像をさまざまなサイズで再利用することができる 2D 技術です。Unity では、1 つのスプライトの指定部分を動的に伸縮させてタイル状にすることで、1 つのスプライトをさまざまなサイズの UI 要素の境界や背景として使用することができます。9 スライススプライトを参照してください。
例えば、2D のレベルを構築する際に、9 スライスでスプライトを引き伸ばして形を整えることができます。
スケーラブルなスプライトに対する 9 スライスの使用を参照してください。
Tilemap コンポーネントは、2D レベルを作成するためのタイルアセットを保存し、処理するシステムです。Tilemap を使用するには、2D Tilemap Editor パッケージ (デフォルトでインストールされています) を使用します。
例えば、Tilemap を使用すると、タイルとブラシツールを使用してレベルをペイントし、タイルの動作のルールを定義することができます。
タイルマップの概要学習チュートリアルを参照してください。
プロジェクトに余分なタイルマップアセットを追加するには、2D Tilemap Extras パッケージをインストールします。このパッケージには、再利用可能な 2D と Tilemap Editor スクリプトが含まれており、独自のプロジェクトに使用することができます。スクリプトの動作をカスタマイズして、さまざまなシナリオに適した新しいブラシを作成することができます。
アイソメトリック投影法 (等角投影法) のゲームでは、アイソメトリックタイルマップを作成することができます。
ベクトル描画ツールと同様に、SpriteShape は体系的な景観やパスなど、より大きなスプライトを作成するための柔軟な方法を提供します。スプライト形状プロファイルを参照してください。
SpriteShape の操作チュートリアルを参照してください。
2D キャラクターのアニメーション化には、3 種類の方法があります。
| 2D アニメーションタイプ | 用途 |
|---|---|
| フレームバイフレーム | 芸術的な理由 - ゲームに古典的なアニメーションのアートスタイルを持たせたい場合。フレームバイフレームアニメーションは、作成するにも実行するにも、比較的リソースに負荷がかかります。 |
| カットアウト | スムーズなスケルトンアニメーション - キャラクターがリアルな表現を必要としない場合。 |
| スケルトン | 骨の構造に合わせてスプライトが曲がる、滑らかなスケルトンアニメーション。キャラクターにより体系的な雰囲気を持たせたい場合に使用します。 |
コマ撮りアニメーションは、アニメーションの各瞬間を個々の画像として描き、それをパラパラ漫画のページをめくるように高速で連続再生するセルアニメーションの伝統的な技法をベースにしている。
フレーム単位のアニメーション化を行うには、フレーム単位アニメーションワークフローに従います。
スプライトアニメーションの概要に関する学習チュートリアルを参照してください。
切り絵アニメーションでは、複数のスプライトがキャラクターの体を構成し、それぞれのパーツが動くことで、キャラクター全体が動いているような視覚効果を得ることができます。このアニメーションは、スプライトが曲がらないことを除けば、スケルトンアニメーション (以下を参照) に近いスタイルです。
スケルトンアニメーションでは、スプライトまたはスプライトのグループを、アニメーションのスケルトンにマッピングします。キャラクターやオブジェクトのアニメーションボーンを作成して定義し、どのように曲げたり動かしたりするかを定義することができます。この方法では、ボーンがスプライトを曲げたり変形させたりすることで、より自然な動きを実現できます。スケルトンアニメーションを使用するには、2D Animation パッケージを使用する必要があります (デフォルトでインストールされています)。
ボーンエディターでの作業ガイドを含む 2D Animation ワークフローについては、2D Animation ドキュメントを参照してください。
このセクションでは、ユニバーサルレンダーパイプライン (URP) を使用する際に利用可能な 2D URP グラフィックス機能について説明します。
2D レンダラーで URP を使用するため、Light 2D コンポーネントを使用して、最適化された 2D ライティングをスプライトに適用することができます。詳細については、Lights 2D の概要を参照してください。
URP でのライティングに関する学習チュートリアルを参照してください。
ライトが影の投影を決定するために使用する形状とプロパティを定義するには、Shadow Caster 2D コンポーネントを使用します。
パーティクルシステムやポストプロセッシングは、ゲームに磨きをかけるためのオプションツールです。
スプライトを使用する代わりにパーティクルシステムを使用して、火や煙、液体などの動的なオブジェクトを作成することができます。スプライトは、物理的なオブジェクトにより適しています。パーティクルシステムを参照してください。
ポストプロセスエフェクトとフルスクリーンエフェクトを使用すると、ゲームの外観を大幅に改善できます。例えば、これらのエフェクトを使用して、物理的なカメラやフィルムのプロパティをシミュレートしたり、様式化されたビジュアルを作成したりできます。
URP には独自のポストプロセスの実装があります。ユニバーサルレンダーパイプライン (URP) のポストプロセスを参照してください。
2D 物理演算設定は、2D ゲームでの物理シミュレーションの精度の制限を定義します。2D 物理演算を参照してください。
このビデオでは、Unity 2020.1 の 2D 物理演算機能の概要を説明します。
Unity の 2D 物理演算エンジンの使用方法については、2D 物理演算の学習チュートリアルを参照してください。
以下の 2D 物理ツールは、2D ゲームに有効です。
Rigidbody 2D コンポーネントにより、ゲームオブジェクトに物理演算エンジンによる制御が適用されます。Rigidbody 2D を参照してください。
Collider 2D コンポーネントは、物理的な衝突を目的とした 2D ゲームオブジェクトの形状を定義します。また、入力検出のために Collider 2D コンポーネントを使用することができます。例えば、モバイルゲームでは、スプライトを選択可能にするために使用できます。
Rigidbody 2D と一緒に使用できる Collider 2D の種類は以下の通りです。
Collider 2D を (Is Trigger プロパティを有効にして) トリガーとして設定すると、物理オブジェクトとして動作するのを止め、衝突を起こすことなく他のコライダーと交差するようになります。その代わりに、コライダーがその空間に入ると、Unity は Trigger GameObject のスクリプトにある OnTriggerEnter 関数を呼び出します。
ジョイントはゲームオブジェクトをつなげます。2D ジョイントは Rigidbody 2D コンポーネントが設定されたゲームオブジェクト、またはワールド空間の固定位置にのみアタッチできます。2D ジョイントを参照してください。
Collider 2D コンポーネントと Effector 2D コンポーネントを使用すると、ゲームオブジェクトのコライダーが互いに接触したときに、シーン内の物理演算の力を制御できます。2D エフェクターを参照してください。
Unity では、ゲームに背景音楽やサウンドエフェクトを追加できます。オーディオの概要を参照してください。サードパーティ製のソフトウェアを使用してオーディオを作成し、推奨される設定で Unity にインポートします。
ゲームにメニューやヘルプを追加する必要がある場合は、ユーザーインターフェースを設定する必要があります。ユーザーインターフェースを設定するには、Unity UI を使用します。
プロファイリングにより、ゲームのさまざまな部分にどれだけリソース負荷がかかっているかを確認できます。ゲームは常にターゲットリリースプラットフォームでプロファイリングする必要があります。アプリケーションのプロファイリングを参照してください。
プロファイリングの後、その結果を使用してパフォーマンスの改善と最適化を行うことができます。Unity における最適化についてを参照してください。
Unity Test Framework でゲームとコードをテストします。Unity Test Framework を参照してください。
ゲームを完成させたら、いよいよ公開です。ビルドの公開を参照してください。