首页 > 代码库 > 旋转缩放代码
旋转缩放代码
using UnityEngine; using System.Collections; // 直接放在相机上,控制相机的旋转和缩放 // public class CameraContro : MonoBehaviour { public Transform target; public float xSpeed=200, ySpeed=200, mSpeed=10; public float yMinLimit=-50, yMaxLimit=50; public float distance=7, minDistance=2, maxDistance=30; //bool needDamping = false; public bool needDamping =true; float damping = 5.0f; public float x = 0.0f; public float y = 0.0f; public void SetTarget( GameObject go ) { target = go.transform; } // Use this for initialization void Start () { Vector3 angles = transform.eulerAngles; x = angles.y; y = angles.x; } // Update is called once per frame void LateUpdate () { if (target) { //use the light button of mouse to rotate the camera if( Input.GetMouseButton(0) ) { x += Input.GetAxis("Mouse X") * xSpeed * 0.02f; y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f; y = ClampAngle(y, yMinLimit, yMaxLimit); //print(Input.GetAxis("Mouse X")); //print( Input.GetAxis("Mouse Y")); //print(x); //print(y); } 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.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; } } } 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); } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。