Unity 移动摄像机到目标位置

来源:互联网 发布:淘宝发布宝贝违规明细 编辑:程序博客网 时间:2024/05/13 17:56
今天实现了一个小功能,通过移动摄像机实现定位功能功能描述:一开始摄像机处于初始位置,通过点击鼠标选择目标物体将摄像机拉近到目标物体,实现定位功能,还可以通过回归按钮使摄像机回归到初始状态。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;}}}


1 0