UnityアセットのSceneやTerrain鑑賞用に座標を見ながら空中カメラを自由に動かしたい
環境 Unity Editor 2019.4.11f1 / Win10
Unityアセットとかのデモシーンを気軽にカメラだけで自由自在に散策したい。ついでに座標もとれると個人的に都合がよく、さらにワープできるともっといい。
ということでその方法
コードは基本すべてコピペしてくるか、ちょっとカスタムさせてもらう
結果はこちら
全体の手順
1, Hierarchyウィンドウで右クリック->CreateEmptyで適当なオブジェクト例えばCameraRigを作成する。
2, CameraRigにCameraMover.csのスクリプトをアタッチする。(カメラの基本操作)※CameraMover.csについては後述
3, CameraRigにTeleport.csのスクリプトをアタッチする。(適当なボタンにワープ先の座標登録)※Teleport.csについては後述
4, 座標表示用UIを作成する(CameraRigオブジェクトのリアルタイム座標取得用)※UI作成詳細は後述
5, MainCameraをこのCameraRigオブジェクトの子オブジェクトにする。
6, 4で生成したUI(CanvasとついでにEventSystem)もCameraRigオブジェクトの子オブジェクトにする。
2,カメラの基本操作
https://qiita.com/Nekomasu/items/f195db36a2516e0dd460
こちらで公開されているCameraMover.csを弄らないでそのままinspectorウィンドウでAdd componentする。
基本操作は
WASD:前後左右の移動
QE:上昇・降下
右ドラッグ:カメラの回転
左ドラッグ:前後左右の移動
スペース:カメラ操作の有効・無効の切り替え
P:回転を実行時の状態に初期化する。
3,ワープ先(任意)の座標登録
https://squmarigames.com/2018/11/29/unity-beginner-vector3/
を参考にTeleport.cs は下記
=====Teleport.cs=====
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Teleport : MonoBehaviour {
//ワープ先座標の指定
public Vector3 default_pos = new Vector3(60f, 60f, 60f);
// Use this for initialization
void Start () {
transform.position = default_pos;
}
// Update is called once per frame
void Update () {
//キーボードのY(任意)を押すと、default_posで設定したXYZ座標にワープする
if (Input.GetKey(KeyCode.Y)) {
transform.position = default_pos;
}
}
}
4,座標表示用UIを作成する
https://qiita.com/Nattouumai1075/items/43f4b0293df423588cfc
こちらで公開されているスクリプトをちょこっと改造。
Hierarchウィンドウで右クリック
UI->Textを選択
作成された
Canvas-Textに下記スクリプトdisp_res.csをアタッチする
Assetsウィンドウで右クリックCreate->C#Scriptで作成したものを下記に置き換える
=====disp_res.cs=====
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class disp_res : MonoBehaviour {
//変数設定
int i_X;
int i_Y;
int i_Z;
//知りたい座標のCameraの設定 public変数なのでinspectorウィンドウのTargetから指定する
public GameObject target;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
//それぞれに座標を挿入、intにキャストして小数点以下を切り捨て
i_X = (int) target.transform.position.x;
i_Y = (int) target.transform.position.y;
i_Z = (int) target.transform.position.z;
//テキストに表示
this.GetComponent<Text> ().text = "X:" + i_X.ToString() + " Y:" + i_Y.ToString() + " Z:" + i_Z.ToString() + "\n";
}
}
5,6の手順で出来たCameraRigオブジェクトをプレハブ化しておけば、各シーンのHierarchyにドロップするだけですぐ動かせる。
Assetsストアでダウンロードしてきたデモ用のSceneやTerrainをすぐに神の視点で探索可能になる。