时间:2021-05-19
补充:unity 摄像机围绕某个物体进行旋转放大缩小
来控制摄像机围绕物体旋转缩放 ,脚本挂在摄像机上即可,target是需要观看的物体
public Transform Camera2;public GameObject target;private float dis;public float xSpeed = 200, ySpeed = 200, mSpeed = 10; //移动速度public float yMinLimit = -50, yMaxLimit = 50; //摄像机的Y轴移动最小最大限制public float distance = 7, minDistance = 2, maxDistance = 30; //摄像机与目标物体的距离public bool needDamping = true; //阻尼默认开启float damping = 5.0f; //默认阻尼为5.0Fpublic float x = 0.0f; //X轴public float y = 0.0f; //Y轴// Use this for initializationvoid Start() { instance = this; Camr = Camera2Rotation.Close; Vector3 angles = transform.eulerAngles; x = angles.y; y = angles.x; }private void Update(){}void LateUpdate(){ //使用按下鼠标左键移动物体 if (Input.GetMouseButton(1)) { x += Input.GetAxis("Mouse X") * xSpeed * 0.02f; y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f; y = ClampAngle(y, yMinLimit, yMaxLimit); } distance -= Input.GetAxis("Mouse ScrollWheel") * mSpeed; distance = Mathf.Clamp(distance, minDistance, maxDistance); Quaternion rotation = Quaternion.Euler(y, x, 0.0f); Vector3 disVector = new Vector3(0.0f, 0.0f, -distance); Vector3 position = rotation * disVector + target.transform.position; //adjust the camera if (needDamping) { transform.rotation = Quaternion.Lerp(transform.rotation, rotation, Time.deltaTime * damping); transform.position = Vector3.Lerp(transform.position, position, Time.deltaTime * damping); } else { transform.rotation = rotation; transform.position = position; } }/// <summary>/// 旋转角度的控制/// </summary>/// <param name="angle">旋转的角度</param>/// <param name="min">最小角度</param>/// <param name="max">最大角度</param>/// <returns></returns>static float ClampAngle(float angle, float min, float max){ if (angle < -360) angle += 360; if (angle > 360) angle -= 360; return Mathf.Clamp(angle, min, max);}void MoveCameraToTarget(){ if (target != null) { Camera2.LookAt(target.transform); Camera2.position = Vector3.MoveTowards(Camera2.position, target.transform.position, 5 * Time.deltaTime); dis = Vector3.Distance(Camera2.transform.position, target.transform.position); if (dis < 1.5f) { Camr = Camera2Rotation.Open; CancelInvoke(); } }}以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了Unity使用摄像机实现望远镜效果的具体代码,供大家参考,具体内容如下听起来挺酷炫,其实超简单,就是控制摄像机的fieldOfView:us
在Unity中,我们经常需要让摄像机跟随一个物体移动,如果物体是水平移动的,而自身没有发生任何的偏转,那么我们可以直接将摄像机放在该物体下。这样就可以实现它们一
本文实例为大家分享了Unity3D实现相机跟随控制的具体代码,供大家参考,具体内容如下跟随算法要实现3D摄像机的控制第一步就是先实现摄像机跟随物体移动。要想让相
本文实例为大家分享了Unity3D实现摄像机镜头移动并限制角度的具体代码,供大家参考,具体内容如下摄像机镜头跟随鼠标移动,并限制上下左右的移动角度publicc
日前,小蚁推出了一款云台摄像机,支持360°旋转,售价299元。下面为大家送上图赏。外观方面,小蚁云台摄像机采用双旋转云台设计,支持水平345°