Unity 移動攝像機到目標位置
阿新 • • 發佈:2019-02-07
今天實現了一個小功能,通過移動攝像機實現定位功能功能描述:一開始攝像機處於初始位置,通過點選滑鼠選擇目標物體將攝像機拉近到目標物體,實現定位功能, 還可以通過迴歸按鈕使攝像機迴歸到初始狀態。 using UnityEngine; using System.Collections; public class Sce_09_InstrumentLocating : MonoBehaviour { public string InstrumentID; //儀表元件 private Transform obj0; private Transform obj1; private Transform obj2; //攝像機元件 public Transform Cam_transform; private Vector3 Cam_pos0; public float smoothTime = 0.5F; private Vector3 velocity = Vector3.zero; //偏移量 private Vector3 offset = new Vector3 (10, 10, -10); public bool isMove; void MyFunction1(string instrumentid) { InstrumentID=instrumentid; isMove = true; } void Start () { obj1 = GameObject.Find ("壓力錶1").transform; obj2 = GameObject.Find ("壓力錶2").transform; Cam_transform = Camera.main.transform; Cam_pos0 = Cam_transform.position; //儲存攝像機初始座標 isMove = false; } void Update() { //平滑阻尼的使用 if (isMove) { if (InstrumentID == "0") { Cam_transform.position = Vector3.SmoothDamp (Cam_transform.position, Cam_pos0, ref velocity, smoothTime); } if (InstrumentID == "1") { Vector3 obj1Position = obj1.position; Cam_transform.position = Vector3.SmoothDamp (Cam_transform.position, obj1Position+ offset, ref velocity, smoothTime); } if (InstrumentID == "2") { Vector3 obj2Position = obj2.position; Cam_transform.position = Vector3.SmoothDamp (Cam_transform.position, obj2Position + offset, ref velocity, smoothTime); } } } void OnGUI(){ //本地按鈕測試定位 if (GUILayout.Button ("迴歸", GUILayout .Width (80), GUILayout .Height (30))) { InstrumentID ="0"; isMove=true; } if (GUILayout.Button ("1號儀表", GUILayout .Width (80), GUILayout .Height (30))) { InstrumentID ="1"; isMove=true; } if (GUILayout.Button ("2號儀表", GUILayout .Width (80), GUILayout .Height (30))) { InstrumentID ="2"; isMove =true; } } }