[unity3d日本語チュートリアル]玉転がしの作り方 第11回『カメラを動かす』後編

前回のチュートリアル

前回はカメラにスクリプトを追加し、玉オブジェクトを参照できるようにしました。

まだ読んでいない方はこちらからどうぞ『玉転がしの作り方 第10回『カメラを動かす』前編

今回やること

今回はカメラが玉を追いかけるようにして、出来栄えをみてカメラが追いかける位置を調整していきます。

具体的なやることは、

1.コードの記述(追いかける処理)
2.位置の調整


です。

それではやっていきましょう!

コードの記述(追いかける処理)

カメラオブジェクトが玉オブジェクトを追いかける処理を書いていきます。

記述内容は、

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraManager : MonoBehaviour {

	public Transform sphere; 
	
	// Update is called once per frame
	void Update () {

        //今回追加
        GetComponent<Transform>().position = sphere.position;
    }
}

簡単に解説しましょう。

GetComponent<Transform>()はスクリプトが付いているオブジェクト、今回はカメラオブジェクトの『Transform』というコンポーネントを取得します。

このコンポーネントのことですね。

GetComponent<Transform>().positionはTransformコンポーネントのポジション情報を取得します。

ここの部分のことです。

つまり、GetComponent<Transform>().position = sphere.positionはカメラの位置を玉の位置と同じにすることを表しています。

再生してみる

とりあえずカメラが玉を追いかけるようになりました。

再生してどのようになっているか確認してみましょう。

再生画面が何が何だかよくわからなくなっていますね!

これはカメラと玉が同じ位置にあるが故に起こる現象です。

カメラの位置を離すことで問題は解決します。

位置の調整

コードを記述して位置を調整していきましょう。

コード内容は以下の通りです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CameraManager : MonoBehaviour {

	public Transform sphere; 
	
	// Update is called once per frame
	void Update () {

        //今回追加
        var adjustment = new Vector3(0.0f, 10.0f, 0.0f); 
     //+ adjustmentが追加
        GetComponent<Transform>().position = sphere.position + adjustment;
    }
}

まずyに10が入ったVector3型の変数adjustmentを作成しています。

varというのは変数の型を推測してくれる記号です。

GetComponent().position = sphere.position + adjustmentでは変数adjustmentをsphere.positionに加算することでカメラの位置を先ほどよりも10高くしています。

二度目の再生

今度は高さをつけたので、おそらく問題ないでしょう。

再生してみます。

高さをつけたら良い感じになりましたね!

まとめ

今回はカメラが玉を追いかける処理と位置の調整を行いました。

次回はアイテムの設置を行なっていきましょう!

次のチュートリアル

次のチュートリアルはこちらからどうぞ『玉転がしの作り方 第12回『アイテムの設置』