zoukankan      html  css  js  c++  java
  • unity3d视角跟随鼠标左右上下转动

    using UnityEngine;
    using System.Collections;
    //1.设置Axes为Mouse X  QQ群:476842922(欢迎加群讨论学习)
    // MouseLook rotates the transform based on the mouse delta.
    // To make an FPS style character:
    // - Create a capsule.
    // - Add the MouseLook script to the capsule.
    //   -> Set the mouse look to use MouseX. (You want to only turn character but not tilt it)
    // - Add FPSInput script to the capsule
    //   -> A CharacterController component will be automatically added.
    //
    // - Create a camera. Make the camera a child of the capsule. Position in the head and reset the rotation.
    // - Add a MouseLook script to the camera.
    //   -> Set the mouse look to use MouseY. (You want the camera to tilt up and down like a head. The character already turns.)
    
    [AddComponentMenu("Control Script/Mouse Look")]
    public class MouseLook : MonoBehaviour {
        public enum RotationAxes {
            MouseXAndY = 0,
            MouseX = 1,
            MouseY = 2
        }
        public RotationAxes axes = RotationAxes.MouseXAndY;
    
        public float sensitivityHor = 9.0f;
        public float sensitivityVert = 9.0f;
        
        public float minimumVert = -45.0f;
        public float maximumVert = 45.0f;
    
        private float _rotationX = 0;
        
        void Start() {
            // Make the rigid body not change rotation
            Rigidbody body = GetComponent<Rigidbody>();
            if (body != null)
                body.freezeRotation = true;
        }
    
        void Update() {
            if (axes == RotationAxes.MouseX) {
                transform.Rotate(0, Input.GetAxis("Mouse X") * sensitivityHor, 0);
            }
            else if (axes == RotationAxes.MouseY) {
                _rotationX -= Input.GetAxis("Mouse Y") * sensitivityVert;
                _rotationX = Mathf.Clamp(_rotationX, minimumVert, maximumVert);
                
                transform.localEulerAngles = new Vector3(_rotationX, transform.localEulerAngles.y, 0);
            }
            else {
                float rotationY = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityHor;
    
                _rotationX -= Input.GetAxis("Mouse Y") * sensitivityVert;
                _rotationX = Mathf.Clamp(_rotationX, minimumVert, maximumVert);
    
                transform.localEulerAngles = new Vector3(_rotationX, rotationY, 0);
            }
        }
    }
  • 相关阅读:
    将本地文件拷到HDFS中
    error C2243: “类型转换”: 从“TechCompany *”到“Company *”的转换存在,但无法访问
    eclipse统计整个项目的代码行数
    查找某个文件在HDFS集群中的位置
    2013年4月22日星期一JS操作 熟悉
    2013年4月18日星期四
    2013年4月19日星期五
    2013年4月25日星期四
    2013年4月20日星期六
    2013年4月22日星期一JS操作 熟悉
  • 原文地址:https://www.cnblogs.com/h694879357/p/12557337.html
Copyright © 2011-2022 走看看