- 最后登录
- 2019-12-2
- 注册时间
- 2012-8-25
- 阅读权限
- 90
- 积分
- 34660
- 纳金币
- 38268
- 精华
- 111
|
- <pre>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);
-
- //<a target="_blank" class="relatedlink">unity3d</a>教程手册:www.unitymanual.com
- }
-
-
- 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;
- }
- //Unity3D教程手册:www.unitymanual.com
-
- }
- }
-
- 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);
- }
- }
- </pre><div></div>
复制代码 |
|