unity3d 第一人称脚本解释MouseLook
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 {
//3个枚举
// 这个表示当前控制模式,分别是
// MouseXAndY上下左右旋转
// MouseX只能左右旋转
// MouseY只能上下旋转
public enum RotationAxes { MouseXAndY = , MouseX = , MouseY = }
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)
{
// 根据鼠标X轴计算摄像机 Y轴旋转角度
float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX; // 根据鼠标Y轴计算摄像机x轴旋转角度
rotationY += Input.GetAxis("Mouse Y") * sensitivityY; // 检查上下旋转角度不超过 minimumY和maximumY
rotationY = Mathf.Clamp (rotationY, minimumY, maximumY); // 设置摄像机旋转角度
transform.localEulerAngles = new Vector3(-rotationY, rotationX, );
}
else if (axes == RotationAxes.MouseX)//如果只是左右旋转
{
transform.Rotate(, Input.GetAxis("Mouse X") * sensitivityX, );
}
else//如果只是上下旋转
{
rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
rotationY = Mathf.Clamp (rotationY, minimumY, maximumY); transform.localEulerAngles = new Vector3(-rotationY, transform.localEulerAngles.y, );
}
} void Start ()
{
// 冻结刚体的旋转功能
// Make the rigid body not change rotation
if (GetComponent<Rigidbody>())
GetComponent<Rigidbody>().freezeRotation = true;
}
}
unity3d 第一人称脚本解释MouseLook的更多相关文章
- Unity3D 第一人称控制器 C#脚本
CharacterMotor.cs using UnityEngine; using System.Collections; /** * @Author : www.xuanyusong.com */ ...
- unity3d学习笔记(一) 第一人称视角实现和倒计时实现
unity3d学习笔记(一) 第一人称视角实现和倒计时实现 1. 第一人称视角 (1)让mainCamera和player(视角对象)同步在一起 因为我们的player是生成的,所以不能把mainCa ...
- 【Unity3D】Unity自带组件—完成第一人称人物控制
1.导入unity自带的Character Controllers包 2.可以看到First Person Controller组件的构成 Mouse Look() : 随鼠标的移动而使所属物体发生旋 ...
- 开发一个最简单的Cardboard虚拟现实应用(四)做一个Cardboard第一人称控制器
[开源互助-原创文章,转载请说明出处]第三帖中已经创建了一个cardboard自带的demo应用,但它是不能移动的,玩家只能站在原地,通过头部转动来观察四周,除此之外,玩家并没有更多的手段与游戏场景进 ...
- 【转】265行JavaScript代码的第一人称3D H5游戏Demo
译文:http://blog.jobbole.com/70956/ 原文:http://www.playfuljs.com/a-first-person-engine-in-265-lines/ 这是 ...
- 关于Unity中FPS第一人称射击类游戏制作(专题十)
当前Unity最新版本5.6.3f1,我使用的是5.5.1f1 场景搭建 1: 导入人物模型, 手持一把枪;2: 导入碎片模型;3: 创建一个平面;4: 创建一个障碍物;5: 导入人物模型;6: 配置 ...
- 扩展Unity3D编辑器的脚本模板
近期在学习Shader时感觉Shader语言參数众多.语法诡异,假设每次都从头開始写Shader一定是一件痛苦的事情.假设能够在本地定义好一组标准的Shader模板,这样当我们须要实现某些效果相似 ...
- 改造u3d第一人称控制器,使之适合Cardboard+蓝牙手柄控制
一.在u3d编辑器中删除FPSController游戏对像中自带的Camera: 二.在u3d编辑器中将CardBoardMain游戏对像添加到FPSController的子物体: 三.修改脚本: 1 ...
- 如何使用threejs实现第一人称视角的移动
在数据可视化领域利用webgl来创建三维场景或VR已经越来越普遍,各种开发框架也应运而生.今天我们就通过最基本的threejs来完成第一人称视角的场景巡检功能.如果你是一位threejs的初学者或正打 ...
随机推荐
- git修改提交的用户名
场景分析 试想一下这样的场景,你先在自己的电脑上上创建了一个项目,并且把他添加到了git仓库,然后提交到了Github.但是,下一次,你在公司的电脑上clone了这个项目,并且修改了文件,当你提交到G ...
- Chap8:加密货币TOP100[《区块链中文词典》维京&甲子]
根据2018年1月15日CoinMarketCap的加密货币市值排名编写,这里介绍TOP10,具体请参考<区块链中文词典>维京&甲子 01.比特币/Bitcoin/BTC 一种点对 ...
- scrapy windows下出现importError:No module named 'win32api'
scrapy windows下出现importError:No module named 'win32api'需安装 pip install pypiwin32
- TMS WEB Core v1.2预览版:新的Electron应用程序支持
2019年2月20日,星期三 几个月前,我们已经开始与Electron进行实验.在工作概念验证之后,我们的目标是为Delphi开发人员尽可能多地包装Electron API.但当然不仅仅是可以使用的E ...
- 手工sql注入简单入门
1.判断是否可以注入: 数字型: 1.1在参数后面加一个引号',如果页面报数字number错误,则一定不是sql注入点:如果报数据库比如mysql.oracle之类的错误,则是一个sql注入点. 1. ...
- mysql存储过程游标嵌套循环
自己写的一个mysql存储过程如下: BEGIN DECLARE _did bigint(20);DECLARE _count int;DECLARE s1 int;DECLARE cur_1 CUR ...
- 【Python基础】random 的高级玩法
random 模块的高级玩法 1.python 随机产生姓名 方式一: import random xing = [ '赵', '钱', '孙', '李', '周', '吴', '郑', '王', ' ...
- TZOJ 5640: 数据结构实验:仓库管理
描述 某百货公司仓库中有一批电视机,按其价格严格从低到高的次序,以链表(链表含头结点)的形式存储于计算机中,链表的每个结点表示同样价格的电视机台数.现在又有m台价格为x元的电视机准备入库,请将其加入到 ...
- CSS 优先级&伪元素&伪类
优先级 单冒号(:)用于CSS3伪类,双冒号(::)用于CSS3伪元素 伪元素 属性 描述 CSS :first-letter 向文本的第一个字母添加特殊样式 1 :first-line 向文本的首行 ...
- 3.1-uC/OS-III的特点:
1.C/OS-III是一个可扩展的, 可固化的, 抢占式的实时内核, 它管理的任务个数不受限制. 它是第三代内核, 提供了现代实时内核所期望的所有功能包括资源管理.同步.内部任务交流等. uC/OS- ...