Unity3D自带Mouse Look鼠标视角代码解析。

翻译 2016年10月17日 16:22:00

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 rotation
        if (rigidbody)
            //控制物理是否改变物体的旋转,如果freezeRotation被启用,旋转不会被物体模拟修改。
            //这对于创建第一人称射击游戏时是很有用的,因为玩家需要使用鼠标完全控制旋转。
            rigidbody.freezeRotation = true;
    }
}

Unity 视角 第一人称脚本 MouseLook

研究了一下第一人称控制器后,把它的
  • chenggong2dm
  • chenggong2dm
  • 2014年06月30日 12:00
  • 32928

Unity第一视角MouseLook源码分析

本文对Unity第一视角MouseLook源码继续深入分析,并引用一些四元数的数学概念来阐述代码工作原理。...
  • zjq2008wd
  • zjq2008wd
  • 2015年05月20日 15:57
  • 2420

Unity基础包 FirstPersonController下的MouseLook 脚本研究

版本:unity 5.3.4  语言:C#   又不知道要做什么了,这周周末把Animator的基础部分刷了,跟模型结合的比较紧密,代码其实没什么,就是非常羡慕熟练操作3dsmax的美工们。  ...
  • u012632851
  • u012632851
  • 2016年11月07日 17:02
  • 1675

UNITY - MouseLook

  • 2012年12月28日 02:55
  • 2KB
  • 下载

[unity3d]关于MouseLook的问题

今天碰到一个有关于unity引擎自带的第一人称视角中自带的mouselook的脚本的问题,任我怎么修改RotationAxes中的枚举变量他都执行的单一的判断操作。 例如:脚本一开始有public ...
  • s10141303
  • s10141303
  • 2013年11月12日 14:35
  • 3643

Unity学习之第一人称视角旋转

欢迎大家来到我的博客http://unity.gopedu.com/home.php?mod=space&uid=3352&do=blog&view=me&from=space 第一人称视角随鼠...
  • gy4564349
  • gy4564349
  • 2014年12月31日 22:50
  • 2282

Unity3D 初涉门径 之鼠标控制视角转动

前面,学了物体的移动功能,现在来学一下鼠标控制摄像机(视角)移动 ( ⊙o⊙ )~。代码如下: C#脚本(在Unity 5.5.1 下能运行): using System.Collections; ...
  • JeterPong
  • JeterPong
  • 2017年02月28日 22:48
  • 1647

Unity3D自带Mouse Look鼠标视角代码解析。

自带Mouse Look代码解析
  • u013490128
  • u013490128
  • 2016年10月17日 16:22
  • 336

Unity基础包 FirstPersonController下的MouseLook 脚本研究

原文链接:点击打开链接 版本:unity 5.3.4  语言:C#   又不知道要做什么了,这周周末把Animator的基础部分刷了,跟模型结合的比较紧密,代码其实没什么,就是非常羡慕熟...
  • qq_26270779
  • qq_26270779
  • 2017年04月05日 16:32
  • 469

【Unity3D】键盘鼠标控制视角的移动

在3D游戏里面,视角是一个很重要的因素,部分玩家对锁视角嗤之以鼻,因此视角也是游戏制作里面需要努力的方面。其实也不难,换到Unity3D里面是想办法控制摄像机的移动。下面举一个简单的例子说明在Unit...
  • yongh701
  • yongh701
  • 2017年05月02日 16:38
  • 6509
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Unity3D自带Mouse Look鼠标视角代码解析。
举报原因:
原因补充:

(最多只允许输入30个字)