右键旋转物体用Quaternion实现,unity封装的非常好,用AngleAxis即可。其实也可以旋转相机来实现。代码如下:
public class RotateComponent : MonoBehaviour {
public enum RotationAxes { MouseXAndY = 0, MouseX = 1, MouseY = 2 }
public RotationAxes axes = RotationAxes.MouseX;
public float sensitivityX = 15F;
public float sensitivityY = 15F;
public float minimumX = -360F;
public float maximumX = 360F;
public float minimumY = -60F;
public float maximumY = 60F;
float rotationX=0F;
float rotationY = 0F;
//支持中文
// Use this for initialization
void Update()
{
if (Input.GetMouseButton(1))
{
rotationX = -Input.GetAxis("Mouse X") * sensitivityX;
rotationY = Input.GetAxis("Mouse Y") * sensitivityY;
rotationX = ClampAngle(rotationX, minimumX, maximumX);
rotationY = ClampAngle(rotationY, minimumY, maximumY);
Quaternion xQuaternion = Quaternion.AngleAxis(rotationX, Vector3.up);
Quaternion yQuaternion = Quaternion.AngleAxis(rotationY, Vector3.right);
if (axes == RotationAxes.MouseXAndY)
{
transform.localRotation = transform.localRotation * xQuaternion * yQuaternion;
}
else if (axes == RotationAxes.MouseX)
{
transform.localRotation = transform.localRotation * xQuaternion;
}
else
{
transform.localRotation = transform.localRotation * yQuaternion;
}
}
}
float ClampAngle(float rotation,float min,float max){
return Mathf.Clamp(rotation,min,max);
}
}