Ilingis 发表于 2022-7-18 12:39

Unity 鼠标键盘预览场景脚本

直接上代码:
/** * ========================================== * FileName: KeyboardMouseHandle.cs * Author:   lijia * CreatTime:7/18/2022 * ========================================== */using UnityEngine;public class KeyboardMouseHandle : MonoBehaviour{        public float moveSpeed = 4.0f;        public float xSpeed = 250.0f;        public float ySpeed = 120.0f;        public int yMinLimit = 30;        public int yMaxLimit = 30;    //旋转角度    private float x = 0.0f;    private float y = 0.0f;    private float y_offset;    void Start()    {      y_offset = transform.position.y;    }    // Update is called once per frame    void Update()    {      //WSAD 移动      Move();      //鼠标右键旋转      Rotation();    }    void Move()    {      float horizontalinput = Input.GetAxis("Horizontal");      //AD方向控制      float Verticalinput = Input.GetAxis("Vertical");      //WS方向控制      transform.Translate(Vector3.right * horizontalinput * Time.deltaTime * moveSpeed);      //控制该物体向侧方移动      transform.Translate(Vector3.forward * Verticalinput * Time.deltaTime * moveSpeed);      //确保Y轴不变(摄像机可能有旋转一定角度)      Vector3 position = transform.localPosition;      position.y = y_offset;      transform.localPosition = position;    }    void Rotation()    {      if (Input.GetMouseButton(1))      {            //Input.GetAxis("MouseX")获取鼠标移动的X轴的距离            x += Input.GetAxis("Mouse X") * xSpeed * 0.02f;            y -= Input.GetAxis("Mouse Y") * ySpeed * 0.02f;            y = ClampAngle(y, -yMinLimit, yMaxLimit);            //欧拉角转化为四元数            Quaternion rotation = Quaternion.Euler(y, x, 0);            transform.rotation = rotation;      }    }    //角度范围值限定    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);    }}
页: [1]
查看完整版本: Unity 鼠标键盘预览场景脚本