- //用来获取一个角色对象
- public GameObject target;
原先MouseLook代码我不做修改
Update ()里初始化
- //这里的Pllayer是我获取的那个对象
- target = GameObject.Find("Player");
- using UnityEngine;
- using System.Collections;
-
- [AddComponentMenu("Camera-Control/Mouse Look")]
- public class MouseLook : MonoBehaviour {
-
- public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
- public RotationAxes axes = RotationAxes.MouseXAndY;
- public float sensitivityX = 15F;
- public float sensitivityY = 15F;
-
- public float minimumX = -360F;
- public float maximumX = 360F;
-
- public float minimumY = -85F;
- public float maximumY = 4F;
-
- public float rotationY = 0F;
-
- public GameObject target;
- void Update ()
- {
- target = GameObject.Find("Player");
- if(theDistance>0)
- theDistance = 0;
- if(theDistance < MaxDistance)
- theDistance = MaxDistance;
- if(Input.GetMouseButton(1))
- {
- transform.position = target.transform.position;
- if (axes == RotationAxes.MouseXAndY)
- {
- float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;
-
- rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
- rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
- transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
- }
- else if (axes == RotationAxes.MouseX)
- {
- transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityX, 0);
- }
- else
- {
- rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
- rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);
- transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, 0);
- }
- SetDistance();
- }
- else
- {
- transform.position = target.transform.position;
- SetDistance();
- }
- }
-
- void Start ()
- {
- if (rigidbody)
- {
- rigidbody.freezeRotation = true;
- transform.position = target.transform.position;
- }
- }
-
- //设置相机与人物之间的距离
- void SetDistance()
- {
- transform.Translate(Vector3.forward * theDistance);
- }
- }
现在大家试试动下鼠标摄像机是不是以一个物体为中心点旋转了哇