本文主要是介绍Unity3D自带Mouse Look鼠标视角代码解析。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Unity3D自带Mouse Look鼠标视角代码解析。
代码块
代码块语法遵循标准markdown代码,例如:
using UnityEngine;
using System.Collections;/// MouseLook rotates the transform based on the mouse delta.
/// Minimum and Maximum values can be used to constrain the possible rotation/// To make an FPS style character:
/// - Create a capsule.
/// - Add the MouseLook script to the capsule.
/// -> Set the mouse look to use LookX. (You want to only turn character but not tilt it)
/// - Add FPSInputController script to the capsule
/// -> A CharacterMotor and a CharacterController component will be automatically added./// - Create a camera. Make the camera a child of the capsule. Reset it's transform.
/// - Add a MouseLook script to the camera.
/// -> Set the mouse look to use LookY. (You want the camera to tilt up and down like a head. The character already turns.)
[AddComponentMenu("Camera-Control/Mouse Look")]
public class MouseLook : MonoBehaviour {//声明一个RotationAxes枚举类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 = -60F;public float maximumY = 60F;float rotationY = 0F;void Update (){if (axes == RotationAxes.MouseXAndY){//ransform.localEulerAngles.y表示绕父级的Y轴旋转角度;Input.GetAxi根据坐标轴名称获取虚拟坐标系中的值float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;rotationY += Input.GetAxis("Mouse Y") * sensitivityY;//Mathf.Clamp限制rotationY值在min和max之间,如果小于min返回min,如果大于返回max,之间则返回实际的值rotationY = Mathf.Clamp (rotationY, minimumY, maximumY);//此x.y.z值按照分别围绕z旋转z,x旋转x,y旋转y的顺序执行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);}}void Start (){// Make the rigid body not change rotationif (rigidbody)//控制物理是否改变物体的旋转,如果freezeRotation被启用,旋转不会被物体模拟修改。//这对于创建第一人称射击游戏时是很有用的,因为玩家需要使用鼠标完全控制旋转。rigidbody.freezeRotation = true;}
}
这篇关于Unity3D自带Mouse Look鼠标视角代码解析。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!