top of page

1分間 Unity講座 スクリプトファイルを使ってターゲットを追従するカメラを作成する方法(3D編)

このブログは「ファイブボックス一分間Unity講座」の補足説明となる記事です。主にUnityに初めて触れる方や初心者向けの講座になります。

Unityを自由に使いこなせる方にとっても、ちょっとお役に立つ情報を掲載していますので、もしよければご参照ください。

前回までの記事でキャラクターが前進、左右に向きを変えるプログラムができています。ここまで出来たらカメラがPlayerを追いかけるプログラムを作ってみたいですね。

今回はターゲット追従カメラの作成(3D編)として、3Dでプロジェクトを作成した際の追従方法について、いくつかご紹介いたします。


下の動画は「一分間Unity講座 スクリプトファイルで左右の回転を実現する方法」 のショート動画です。ご興味がございましたら、こちらの動画もご参照ください!





説明をする前に、追従の状況がわかりやすくなるように、対象となるオブジェクトを作成しておきましょう。サンプルでは3D


1,Targetの子要素にする方法


下の図の様に、MainCamera を追従したいターゲットの子要素として配置します。

Inspectorでターゲットとの相対的位置を指定。サンプルでは上方向に2,前後方向にマイナス5,つまり5つ後方、2つ上部からターゲットを捉えるように指定します。Rotationのx軸に15度の角度を与えることで、カメラを水平方向に捉えるのではなく、15度だけ下方向に回転させた角度でとらえています。

カメラをターゲットの子要素として配置する方法

これで下のような距離感で、ターゲットを常にとらえることができるようになっています。これはもっとも単純な方法ですが、常に同じ距離感、角度でとらえているので躍動感にかけたり、カメラとターゲットの間に壁があった時などはTargetが見えなくなってしまうなどの課題も残ります。

カメラをターゲットの子要素として配置した際の動き

2,スクリプトファイルでコントロールする方法


今回の動画で基本となるプログラムをご紹介しています。


2.1、スクリプトファイルの作成とアタッチ

Asset内で右クリック(または+ボタン)、Create ⇒ C#Script

「CameraFollow」などの任意の名前のスクリプトファイルを作成します。

作成したスクリプトファイルを MainCamera にアタッチします。

Cameraのスクリプトファイルの作成

2.2、プログラムの作成

まずは追従対象となるGameObject型の変数:target を宣言します。

Start関数内で、targetに初期値を代入します。サンプルでは「unitychan」という名前のオブジェクトなので、GameObject.Find()関数で対象のオブジェクトを名前で探します。


GameObject target;  //追従対象のオブジェクト

void Start()
{
    target = GameObject.Find("unitychan");  //target を取得
}

続いて追従プログラムを作成します。

カメラはターゲットが向いている方向の5つ後方、2つ上方向からターゲットを捉えたいと思います。

座標の値(x、y、z)はベクトルなので、足したり引いたりすることができます。


void Update()
{
    transform.position =                    //座標を指定
        target.transform.position               //Targetの座標
        - target.transform.forward * 5          //Targetの5つ後方
        + transform.up * 2;                     //targetの2つ上方
    transform.rotation = target.transform.rotation; //Targetと同じ向きに
}

3,CinemaSceneの活用

Unityにはカメラの動きを管理するCinemaSceneという機能があります。3つ目はこの活用です。

※この内容は近日(次回のショート動画で)公開予定!



 

ファイブボックスでは、Unityの個別指導オンラインレッスンを行っています。

ご興味のある方は当サイト、オンラインレッスンから、無料体験授業へお問い合わせ下さい。

Comments


bottom of page