
環境
Tutorial
Beginner
+0XP
20 mins
(168)
Unity Technologies

前回のチュートリアルでは、プレイヤーキャラクターの作成が終わりましたね。このキャラクターは動き回ることができますが、まだ探検する場所がありません。さあ、あなたのシーンに環境を追加する準備ができました。これを正しくライティングし、最終的にお化け屋敷の廊下をうろうろ動き回る敵を助けるためのナビゲーションメッシュを追加します!
1. 環境の追加
前回のチュートリアルでは、プレイヤーキャラクターの作成が終わりましたね。このキャラクターは動き回ることができますが、まだ探検する場所がありません。さあ、あなたのシーンに環境を追加する準備ができました。これを正しくライティングし、最終的にお化け屋敷の廊下をうろうろ動き回る敵を助けるためのナビゲーションメッシュを追加します!
Unityで環境を構築するプロセスというのは、作成するゲームの種類によって大きく異なる可能性があります。概して、これには Project ウィンドウから Hierarchy ウィンドウにドラッグして複数のモデルをインスタンス化することが含まれます。環境は通常、シーン内に物理的存在感を必要とするため、各モデルにコライダーが追加されます。多くの場合、これらのモデルはプレハブであるため、毎回新しい コライダーを追加する必要はありません。
ゲーム環境を作るのは非常に手間のかかる作業であり、プレイヤーキャラクターを設定した時点で既にこれらの作業を実践しているはずです。このゲームの環境はすでに作成されており、繰り返し作業を省くことができます。必要なのはインスタンス化することだけです。
1. Project ウィンドウで、 Assets > Scenes フォルダー の順に進み、MainScene をダブルクリックしてロードします。
2. Assets> Prefabs の順に移動し、 Level Prefabを選択します。
3. Level Prefab を Project ウィンドウから Hierarchy にドラッグしてインスタンス化します。
Level Prefab は、壁、床、ドア、家具、装飾品など、多くのモデルで構成されています。どのように構成されているかを確認したい場合は、Hierarchy ウィンドウで階層を展開します。
プレイヤーキャラクターの配置
これでシーンに環境が作られたので、JohnLemon を配置して、キャラクターが正しい場所で始まるようにする必要があります。
1. Hierarchy ウィンドウで、JohnLemon のゲームオブジェクトを選択します。
2. Inspector で、Transform コンポーネントの Position プロパティを(-9.8, 0, -3.2)に設定します。
3. File > Save の順に進み、変更内容をシーンに保存します。
4. 再生モードに入り、変更内容を確認します。カメラは全く必要な場所にあるとは言えませんが、JohnLemon が探索して脱出するためのあらゆるレベルがあります。
この環境は素晴らしいのですが、少し面白みのない感じがします。次のステップは、シーンの ライティングを調整します。
2. 環境のライティング
ライティングは雰囲気に大きな影響を与えます。ゲームにおいてライティングを変えることは、プレイヤーが歩いて進むための実に不気味な環境を作るための第一歩です。
Unity のライトは単純にゲームオブジェクトに Light コンポーネントを追加したものです。Light コンポーネントには、ライトの色や強度、ライトの「タイプ」、シャドウやライトマッピングのための様々な複雑なコントロールを変更するための設定が含まれています。
Unity のすべての新しいシーンには、デフォルトで作成された 2 つのゲームオブジェクトのうちの 1 つ、 ディレクショナルライト が付いています。シーンには、レベルのプレハブによって加えられた一連の追加ライトも含まれています。
ディレクショナルライトから始めましょう。
3. シーンのディレクショナルライトを変更する
シーンのディレクショナルライトは Directional Type に設定されます。Directional Type のライトは、太陽のような限りなく遠くに存在する光源から発する光のようなものです。シーン内のどこにでも配置でき、ライトを回転させて光がシーンに影響を与える角度を変えることができます。
ディレクショナルライトを変更し、月明かりのように感じられるようにしたり、面白い影を作ってみましょう。
1. Hierarchy ウィンドウで、 Directional Light ゲームオブジェクトを選択します。
2. Color(色)から始めて、Light コンポーネントのプロパティをいくつか変更していきますが、まずは色がどのように機能するのかを理解する必要があります。
Inspector で、 Color プロパティをクリックします。Unity の Color プロパティをクリックすると、 Color ピッカーウィンドウ が開きます。
3. Color ピッカーウィンドウには、色の値を設定するためのさまざまなオプションが用意されています。
それぞれの色は 4 つのチャンネルで作られています。
- 赤
- 緑
- 青
- アルファ
色を構成するこれらのチャンネルのそれぞれの色の量は、さまざまな方法で表現することができます。カラーリング直下のドロップダウンメニューを使って表現を選択できます。
ドロップダウンが RGB 0-255 に設定されていることを確認してください。この表現は、各チャンネルが 0 から 255 までの整数で表されることを意味します。
4. Light コンポーネントの Color プロパティを(225, 240, 250)に設定します。そうすると、黄色ではなく、ごく淡いブルーの光が作られます。
5. Light コンポーネントで、Intensity プロパティを 2 に増やします。
6. これで、お化け屋敷の不気味な影のクオリティを向上させることができます。Light コンポーネントで、 Realtime Shadows プロパティを見つけます。Resolution プロパティを Use Quality Settings から Very High Resolution に変更します。
7. Realtime Shadows の Bias と Normal Bias のプロパティを 0.01 に設定します。
8. Transform コンポーネントで、 Rotation プロパティを(30, 20, 0)に設定します。これにより、家の窓から光が差し込むように光を回転させます。
9. シーンの保存
シーンがすでに不気味に見えてきました!
4. グローバルイルミネーションのライトマップエフェクトの作成
Unity には、現実世界の光の挙動をシミュレートするのに役立つ 2 種類のライト(直接光と間接光)があります。直接光は、太陽のような特定の光源(シーン内のディレクショナルライト)です。間接光は、直接光が表面に到達して跳ね返ったときの光のことです。
同じシーン:ライトなし(左)、「直接光」のみ(中央)、間接光を取り入れた「グローバルイルミネーション」(右)。光が表面の間で「跳ね返る」ように色が移り、よりリアルな結果が得られることに注目してください。
この効果は、 グローバルイルミネーションのライトマッピング機能を使って Unity で最もよく作成されます。ライトマッピングは、シーン内での光の跳ね返りをシミュレートし、プロジェクト内に保存されているアセットに書き込み(または「ベイク」)ます。これには時間がかかりますが、より本物らしいシーンを演出することができます。
時間を節約するために、近似値を使用して同様の効果を作ることができます。
1. Window メニューから Rendering > Lighting Settings の順に選択します。名前のタグをクリックしてドラッグし、Inspector ウィンドウの横にドッキングします。
Lighting Settings ウィンドウは、現在読み込まれているシーンのための Unity のグローバルイルミネーション機能の主な制御ポイントです。また、環境光、リフレクション、フォグの設定も含まれています
2. Realtime Lighting セクションでは、 Realtime Global Illumination のチェックボックスを無効 にします。Mixed Lighting セクションで、Baked Global Illumination のチェックボックスを無効にします。
3. Environment セクションで、Skybox Material プロパティの右端にある丸い選択ボタンを使用して、 None(null 参照)に設定します。このゲームではリアルな空は必要ありません。代替となるライティングを使用します。
4. Environment セクションで、Environment Lighting Source を Gradient (グラデーション)に設定します。
グラデーションは 3 つのカラーフィールドに分かれています。
- Sky:シーンの上からくる環境光を制御します。
- Equator:地平線からシーンの中央に向かう光を制御します。
- Ground:シーンの下からくる光を制御します。
グラデーションは、シーン全体を包み込む大きな球体と考えることができます。
5. Sky(空)の色を明るいグレーに設定(170, 180, 200)します。
この設定により、床や、ベッド、テーブルなどのオブジェクトの全体的な明るさを上げます。
6. Equator(地平線)の色をブルーグレーに設定(90, 110, 130)します。
この設定により、壁と小道具の明るさを上げます。
7. Ground(地面)の色を黒に設定(0, 0, 0)します。
地面の色は、素敵なグローバルイルミネーションのような効果を作るライトを追加することができます。しかし、これでは作成中のお化け屋敷には明るすぎるでしょう。
8. シーンの保存
ゲームのための基本的なライティングが完成し、それを使用して不気味な雰囲気を高めました。次に、ゴーストたちがゲーム環境を動き回るためのメッシュを作成します。
5. ナビゲーションメッシュの追加
お化け屋敷にはゴーストが出ることを誰もが知っています。あなたのお化け屋敷も同じはずです!
ゴーストたちが方向を認識することができるようにす るために、Unity には NavMesh(ナビゲーションメッシュの省略形)と呼ばれるシステムが組み込まれています。2 つ目のチュートリアルでは、メッシュとは三角形の集合体であり、それらの三角形を組み合わせて形状を定義するものであることを学びました。このメッシュを使うことで、JohnLemon を画面にレンダリングすることができます。NavMesh は、選択したゲームオブジェクトが移動できる領域を定義する地面の上にある目に見えない形状です。
では、移動できる領域と移動できない領域をどのように決めますか?
ゲームオブジェクトを静的(動かない)として表示する
ゲームオブジェクトが 静的として特定された場合、Unity のナビゲーションシステムは動かないと想定します。ゲームの環境は、多くの Mesh Renderer コンポーネントを備えた多くのゲームオブジェクトで構成されています。ゲームオブジェクトが静的と見なされている Mesh Renderer コンポーネントのすべてのメッシュの組み合わせが NavMesh のベースとなります。
環境のゲームオブジェクトを静的と示すには以下の手順に従ってください。
1. Hierarchy で、Level ゲームオブジェクトを選択します。
2. Inspector で、 Static チェックボックスを有効にします。
3. すべての子オブジェクトの静的フラグも有効にするかどうかを尋ねるダイアログボックスが表示されます。「はい」を選択し、子オブジェクトを変更します。
4. これで Level ゲームオブジェクトとその子ゲームオブジェクトはすべて静的として見なしますが、1 つの例外を設定する必要があります。レベル デザインには、影を落とすために使われる Ceiling Plane ゲームオブジェクトがあります。これをベイクすると、ゴーストが天井を歩いてしまう可能性があります。不気味に聞こえるかもしれませんが、このゲームでは動作しません。
Hierarchy ウィンドウで、 Level ゲームオブジェクトとその子を展開します。
5. Level > Corridors > Dressing > Ceiling Plane の順に進み、 Ceiling Pane ゲームオブジェクトを選択します。
6. Inspector で、 Static チェックボックスを無効にします。
7. File > Save の順に進み、シーンを保存します。
レベルのプレハブではなく、シーン内でこれらの変更を行っていることに気づいたかもしれませんね。プレハブの設定を変更せずにオーバーライドしているのです。これは標準テンプレートにちょっとした変更を加えたいときにとても便利です。
6. NavMesh の作成
Nav Mesh(ナビメッシュ)を作成するプロセスのことを ベイキング と呼びます。これは、 Navigation ウィンドウから行います。
ナビメッシュをベイクするには、以下の手順に従ってください。
1. メニューバーで、 Window > AI > Navigation の順に進み、Navigationウィンドウを開きます。このウィンドウは、Inspector ウィンドウとドッキングされているはずです。そうでない場合は、Inspector ウィンドウにドラッグしてドッキングします。
2. Navigation ウィンドウの上部には、 Agents、Areas、Bake、そして Object の 4 つのタブがあります。
Bake タブを選択します。
3. Bake の詳細設定では、ナビメッシュがどのように構築されるかについて制御します。最初の設定では、NavMesh を通過するエージェント(動き回るゴースト)NavMesh Agentsを参照します。具体的には、エージェントのサイズと、エージェントが移動できる地形を指します。
ゲームに合わせて調整する必要がある唯一の設定は、エージェントの半径(Agent Radius)です。お化け屋敷を歩き回るゴーストはデフォルトよりも小さくなります。
Agent Radius を 0.25 に変更します。
4. ウィンドウの下部にある Bake ボタンを選択します。
コンピュータの処理能力にもよりますが、ベイク処理には 1 秒から数分かかります。終了すると、Scene ウィンドウの環境がライトブルーのメッシュで覆われます。これは、ゴーストが移動できる環境の領域です。
ナビメッシュは、Navigation ウィンドウが開いていてアクティブなときのみ表示されます(Inspector タブに切り替えると、シーンビューからメッシュが消えます)。ご心配なく、ナビメッシュが見えなくても、依然としてそこにありますから!
5. 変更を失わないように、シーンを必ず保存してください。
7. まとめ
本チュートリアルでは、JohnLemon が脱出して適切にライティングするための魅力的な環境を追加しました。ナビメッシュもベイクされたので、敵は環境を移動できるようになります。
ゲームが徐々に形になってきて、いい感じになってますね!あとはシーン内のすべてをより良く見せるポストプロセッシングエフェクトを追加するだけです。