• 7. 通过鼠标右键改变视角


    修改MouseLook.cs中代码,添加红色部分的代码,可以实现持续按住鼠标右键才改变视角

    MouseLook.cs

    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 {
    
        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 (Input.GetMouseButton(1))  
                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);
                }
            else
                ;
        }
        
        void Start ()
        {
            // Make the rigid body not change rotation
            if (rigidbody)
                rigidbody.freezeRotation = true;
        }
    }
  • 相关阅读:
    VC++6.0编译环境介绍
    (六)flask搭建博客系列之HTTPTokenAuth
    (五)flask搭建博客系列之LoginManager
    (四)flask搭建博客系列之FlaskForm
    (三)flask搭建博客系列之BootStrap
    (二)flask搭建博客系列之SQLAlchemy
    (一)flask搭建博客系列之环境项目搭建
    (十)python语法之图像处理
    (九)python语法之机器学习
    (八)python语法之Tkinter
  • 原文地址:https://www.cnblogs.com/code1992/p/3620716.html
Copyright © 2020-2023  润新知