Unityを学ぼう【第3回】
今回概要
追尾カメラの実装
カメラ設定
まず、プレイヤーを見やすいように設定します
1.[Main Camera] を選択 2.[Inspector] -> [Transform] のパラメータ設定
追尾カメラ実装方法1
プレイヤーの入子にすれば、
プレイヤーが移動するとカメラも移動します
1.[Main Camera] を [Player] にドラッグ&ドロップ
実行してみよう!
あれ?
入子にすると、座標だけではなく 角度も影響されてしまう
これは失敗例です
とりあえず、カメラを独立状態に戻します
追尾カメラ実装方法2
スクリプト作成
1.[Main Camera] を選択 2.[Inspector] -> [Add Component] -> [New Script] 3.名前:CameraController 4.[Create and Add] *[Assets]に保存されますので、[Scripts] に移動します
スクリプト編集
// CameraController.cs using UnityEngine; using System.Collections; public class CameraController : MonoBehaviour { public GameObject player; // ① private Vector3 offset; // ② void Start() // ③ { offset = transform.position; // ④ } void LateUpdate () // ⑤ { transform.position = player.transform.position + offset; // ⑥ } }
変数宣言
public GameObject player; // ① private Vector3 offset; // ②
①GameObject保存用変数、[Inspector]から設定できるように public にします
②カメラオフセット保存用変数、Start() 内初期化するので private にします
スクリプトスタート関数
void Start() // ③
スクリプト準備完了~更新関数の間に一回のみ実行されます
初期化コードはここに書くとよいでしょう
変数初期化
offset = transform.position; // ④
スタート時の座標を保存します
更新関数
void LateUpdate () // ⑤
Update() の代わりに LateUpdate() を使用します
LateUpdate()はすべてオブジェクトの Update() を実行後に呼ばれます
追尾座標設定
transform.position = player.transform.position + offset; // ⑥
GameObject座標 + カメラオフセット座標
これでGameObjectとの距離が固定されます
追尾ターゲット設定
スクリプトを保存しUnityに戻り以下操作を行います
1.[Camera Controller] の Player 設定 ↓ これで設定完了します
実行&テスト
実行して、[↑] [↓] [←] [→]を入力すると
プレイヤーが移動し、カメラはあとを追いかけます
これで追尾カメラの実装が完了です
次回予告:収集アイテム作成を学ぼう
*1:カメラ移動:http://unity3d.com/learn/tutorials/projects/roll-a-ball/moving-the-camera