【UnityC#講座】Cameraをターゲットに向かせる、画面を分割する、切り替える

Unity2017.4.1f1
Windows10

今回からUnity2017でやっていきます。
やることはシンプルなことなのでおそらくはバージョンの違いは関係ないと思います。
まずはプロジェクト「The Camera」を作ってください。

■動かす物体の準備

Cameraで映す動く物体を作りましょう。
CubeとC#スクリプトを出してください。

Hierarchy > Create > 3D Object > Cube

Project > Create > C# Script

CubeのPositionはXYZすべて0にしておいてください。
スクリプトの名前はわかりやすくCubeにしました。
次はスクリプトを書きます。

public boolにしたのは後で他のClassから参照できるようにするためです。
さて無事に動いたでしょうか?

GIF/Cube動く

スクリプトをCubeにセットしたら、HierarchyのそれをProjectのAssetsの欄にドラッグ&ドロップしてPrefabにしてください。

CubeをPrefabに

■Cameraが動く物体を追うようにする

まずは空のオブジェクトとC#スクリプトを作ります。

Hierarchy > Create > Create Empty

C#スクリプトはさきほどと同じやり方です。
名前はどちらも「FaceTo」にしてください。
それからスクリプトを書きます。

FaceToスクリプトをFaceToオブジェクトにドラッグ&ドロップし、そのInspectorにCubeとMain CameraをHierarchyから同じ要領でセットしてください。
注意点はAssetsのCubeを入れると上手く動かないのでHierarchyのもの使います。

FaceToにCubeとMain Cameraを

さてCameraは動くCubeを追うようになったでしょうか?

GIF/Camera向き変える

■画面を4分割する

次はSave ScenesでこのSceneを保存してください。
名前はCamera01など適当なもので構いません。

File > Save Scenes

Save Scenes/Save Scene as

それからSave Scene asでこのSceneのコピーを使います。
名前は適当にCamera02にでもしてください。

File > Save Scene as

次は新たにCamraを3つ出します。

Hierarchy > Create > Camera

CameraはHierarchyの上から順に位置とサイズを変えていきましょう。
CameraのInxpectorにあるViewport Rectで変えます。
Xが横軸の位置、Yが縦軸の位置を決め、WはWidthで幅、HがHighで高さを決めます。

Camera1のTransformとViewport Rect

Camera2のTransformとViewport Rect

Camera3のTransformとViewport Rect

Camera4のTransformとViewport Rect

スポンサーリンク

セットできたら再生してみてください。
4つの画面で動くCubeを見ることができます。
しかし、Consoleを見るとこのようなメッセージが出ているでしょう。

Camera複数でAudio Listenerのエラー

それはCameraのInspectorのAudio Listenerが複数あることが原因なのでひとつひとつチェックボックスを外すか右端の歯車マークからRemove Componentで削除してください。
Audio Listenerはパソコンから音を出すためのものです。

Audio Listenerのチェックボックスをオフ

これで上手く行くはずです。

GIF/Camera4分割

でもこれだとみんな同じ背景で分かりにくいのでそれぞれの画面の背景を変えましょう。
まずこのアセットをダウンロード&Importしてください。

次に各CameraにSkyboxコンポーネントを追加します。

Inspector > Add Component > Skybox

SkyboxコンポーネントのCustom Skyboxにダウンロードした画像を入れます。
使えるのは各フォルダの左端の画像だけです。

CameraのSkybox

するとこのようにCameraごとに別々の背景を持たせることができます。

GIF/Camera4分割/Skybox

■Cameraを切り替える

次はスクリプトでCameraを切り替えます。
Save Scenesしてから新しいScene「Camera03」を作ってください。

File > New Scene

できたら次のようにしてください。

1.HierarchyにAssetsにあるPrefabのCubeをドラッグ&ドロップします。

2.2つ目のCameraを出してAudio Listenerをオフにする。
Cameraの位置と向きは以下の通りにしましたが厳密に再現する必要性はありません。

Main Cameraの位置と角度 Cameraの位置と角度

3.からのオブジェクト「CameraSwitch」を作る。

4.C#スクリプト「CameraSwitch」を作る。

5.CameraSwitchオブジェクトにCameraSwitchスクリプトをセットする。

これまで紹介した方法でできるはずです。
そしてスクリプトはこちら。

CubeオブジェクトのCubeスクリプトにアクセスし、そこから常にswitching変数のデータを取り続けます。
Cameraはenabledのtrueかfalseで表示・非表示を切り替えます。

スクリプトが書けたらCameraSwitchのInspectorに2つのCameraをセットしましょう。
上がMain Cameraで下が後で出したCameraです。
CubeはHierarchyに出したものをセットしてください。

CameraSwitchにCubeとCamera2つ入れる

さて、無事に切り替わったでしょうか。

GIF/Camera切り替え

先ほどはCameraごとに背景を変えましたがそれ以外にもSceneごとに変える方法もあります。

Window > Lighting > Settings > Skybox Material

またGalaxyBox 2.0から画像を選んでSkybox Materialにセットしてください。

Skybox Material

そうすると一度に全てのCameraの背景が変わります。

GIF/Camera切り替え/Skybox

■Cameraを重ねる

ついでにCameraを重ねる場合ですが、InspectorのDepthの数字が大きい方が手前に来ます。

Camera、InspectorのDepth

それで重ねるとこんな感じ。
映像の明るさが違うのは向いている方向が違うからです。

GIF/Camera重ねる

それでは今回はこれで終わります。

■関連記事

【UnityC#講座】上下キーで前進後退、左右キーで方向替える移動法【ユニティちゃん】

スポンサーリンク

目次に戻る