【Unity3D】键盘鼠标控制视角的移动
在3D游戏里面,视角是一个很重要的因素,部分玩家对锁视角嗤之以鼻,因此视角也是游戏制作里面需要努力的方面。其实也不难,换到Unity3D里面是想办法控制摄像机的移动。下面举一个简单的例子说明在Unity3D如何用键盘鼠标控制视角的移动的。如下图所示:
就像大部分游戏一样,可以用鼠标滚轮控制视角的远近,键盘的wasd和上下左右控制镜头的位置,而按着鼠标右键则可以控制镜头的旋转。当然你可以根据需要改成其它控制方式,反正原理是同一个原理。
其实这个游戏场景布置非常非常简单,也不是本文的重点。如下图所示,基本能够一览无遗:
如上图所示,我们其实需要做的,只是控制Main Camera的位置和旋转则能够做到上面的效果。因此赋予给Main Camera,如下的脚本CameraMove.cs:
using UnityEngine;
using System.Collections;public class CameraMove : MonoBehaviour
{public float sensitivityMouse = 2f;public float sensitivetyKeyBoard = 0.1f;public float sensitivetyMouseWheel = 10f;void Update(){//滚轮实现镜头缩进和拉远if (Input.GetAxis("Mouse ScrollWheel") != 0){this.camera.fieldOfView = this.camera.fieldOfView - Input.GetAxis("Mouse ScrollWheel") * sensitivetyMouseWheel;}//按着鼠标右键实现视角转动if (Input.GetMouseButton(1)){transform.Rotate(-Input.GetAxis("Mouse Y") * sensitivityMouse, Input.GetAxis("Mouse X") * sensitivityMouse, 0);}//键盘按钮←/a和→/d实现视角水平移动,键盘按钮↑/w和↓/s实现视角水平旋转if (Input.GetAxis("Horizontal") != 0){transform.Translate(Input.GetAxis("Horizontal") * sensitivetyKeyBoard, 0, 0);}if (Input.GetAxis("Vertical") != 0){transform.Translate(0, Input.GetAxis("Vertical") * sensitivetyKeyBoard, 0);}}}
鼠标右键点击的监听这里就不说了,在《【Unity3D】用鼠标点击事件、AddForce完成跳跃与二段跳》(点击打开链接)已经详细说过了。这里引用了Input.GetAxis的概念。理论上,你可以像《【Unity3D】利用物体碰撞检测、键盘输入处理完成平衡球游戏》(点击打开链接)那样控制物体移动那样,控制主摄像机的移动与旋转的,但是使用Input.GetAxis会让你代码更加简洁,在Unity3D中有18条轴,不过基本上常用轴就是上述代码的几个。
Input.GetAxis能够获取这个轴的输入,也就是同样是用来监听鼠标输入的一个东西,它将返回一个-1~1的数值。用于记录用户按键盘的时长、翻滚轮、鼠标对比上一个位置偏移的多少。这样的话,我们再乘上一个合适的float,则可以形成一个坐标位置。配合Rotate与Translate则能够时物体移动。
另一方面,摄像头的焦距,也就是缩放可以直接对fieldOfView控制而达成。
【Unity3D】键盘鼠标控制视角的移动相关推荐
- Cesium 键盘鼠标控制相机漫游(源码+原理讲解)
Cesium 键盘鼠标控制相机漫游(源码+原理讲解) 在各大博客平台上,Cesium使用键盘控制相机漫游的源码已经有不少人贴出源码,本人在浏览这些源码的过程中发现大家采用的方式基本一致,大部分代码都是 ...
- VR项目添加键盘鼠标控制
VR项目添加键盘鼠标控制 使用VR模版创建的项目,程序运行后,只能使用VR头盔进行交互场景,不便于调试工作,为此,在场景中添加键盘.鼠标控制功能. 1 .键盘控制添加: 键盘控制主要为ASDW 键控制 ...
- Unity3d实现鼠标控制相机绕物体旋转(带阻尼)
Unity3d实现鼠标控制相机绕物体旋转(带阻尼) 本来想的是用四元数实现球性插值实现阻尼效果,但是不知道四元数怎么绕定点旋转.因此用速度衰减的方法进行实现. 1.实现鼠标控制相机带阻尼旋转 2.实现 ...
- Python之OpenGL笔记(17):键盘鼠标控制摄像机移动旋转
一.目的 1.键盘控制摄像机自由移动: 2.鼠标控制摄像机旋转: 3.鼠标滚轮放大缩小视野. 二.程序运行结果 三.自由移动 view = lookAt(cameraPos, cameraPos + ...
- 加入键盘鼠标控制的代码
以下是简单代码实例,着色器就不放了,比较简单 #define GLEW_STATIC #define STB_IMAGE_IMPLEMENTATION#include #include #includ ...
- unity鼠标控制镜头旋转_Unity3D实现鼠标控制视角转动|chu
前面,学了物体的移动功能,现在来学一下C#实现鼠标控制摄像机(视角)移动. 代码如下: C#脚本(在Unity 5.5.1 下能运行): using System.Collections; using ...
- python键盘控制_Python 键盘/鼠标控制
键盘控制 需要用到keyboard模块(pip install keyboard) 按键字符 #字符'1''a'...#控制'ctrl''alt''shift''enter''esc''f1'...# ...
- 无界鼠标:使用一套键盘鼠标控制多台电脑
在办公室需要同时使用自己的电脑和公司的电脑,然而来回切换鼠标是真的麻烦,于是在网上找到并整合和相关方法,供大家参考使用: 无界鼠标百度云:链接:https://pan.baidu.com/s/1GI5 ...
- 鼠标控制视角wasd移动_无线款,轻量级,稳控制:雷蛇(Razer) 毒蝰终极版鼠标的快速体验...
一.无线游戏鼠标的需求在哪里? 关注电竞外设对于用户,对于无线通讯技术应该是普遍持保留意见的.因为普遍认为无线通讯的稳定性会弱于有线. 但是随着技术的进步,目前已经可以实现更高效率的触控传输反馈.因此 ...
最新文章
- python协程异步原理_简单介绍Python的Tornado框架中的协程异步实现原理
- 文巾解题 175. 组合两个表
- JavaFX 中 FX 一词的由来
- 持续集成与自动化部署 - jenkins sonar代码质量管理平台 部署和基础使用(五)...
- 前端笔记-vue cli中使用router-link进行路由跳转
- 【服务端渲染】之 Vue SSR
- 去哪儿-19-detail-ajax
- 百度搜索遭遇“假德邦” 宣判结果来了...
- 令人赞叹的 MySQL
- Electron客户端的自动升级方案-2022版
- Excel如何批量设置行高
- 服务器防护是什么?为什么需要防护?
- python设置Excel单元格的数据有效性
- 关于勒索软件的硬道理:我们还没有准备好,这是一场与新规则的斗争,而且它的影响还没有接近顶峰。
- 求助vmbox更新之后打不开了
- surface pro 7 使用type c耳机问题
- 51nod 1213 二维曼哈顿距离最小生成树
- 在挑战中成长:CTO的生存与发展之道
- 怎么才能使用计算机,电脑说有人远程使用计算机,怎么才能开到机啊
- c语言基础循环练习题,C语言练习题:循环部分