在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】键盘鼠标控制视角的移动相关推荐

  1. Cesium 键盘鼠标控制相机漫游(源码+原理讲解)

    Cesium 键盘鼠标控制相机漫游(源码+原理讲解) 在各大博客平台上,Cesium使用键盘控制相机漫游的源码已经有不少人贴出源码,本人在浏览这些源码的过程中发现大家采用的方式基本一致,大部分代码都是 ...

  2. VR项目添加键盘鼠标控制

    VR项目添加键盘鼠标控制 使用VR模版创建的项目,程序运行后,只能使用VR头盔进行交互场景,不便于调试工作,为此,在场景中添加键盘.鼠标控制功能. 1 .键盘控制添加: 键盘控制主要为ASDW 键控制 ...

  3. Unity3d实现鼠标控制相机绕物体旋转(带阻尼)

    Unity3d实现鼠标控制相机绕物体旋转(带阻尼) 本来想的是用四元数实现球性插值实现阻尼效果,但是不知道四元数怎么绕定点旋转.因此用速度衰减的方法进行实现. 1.实现鼠标控制相机带阻尼旋转 2.实现 ...

  4. Python之OpenGL笔记(17):键盘鼠标控制摄像机移动旋转

    一.目的 1.键盘控制摄像机自由移动: 2.鼠标控制摄像机旋转: 3.鼠标滚轮放大缩小视野. 二.程序运行结果 三.自由移动 view = lookAt(cameraPos, cameraPos + ...

  5. 加入键盘鼠标控制的代码

    以下是简单代码实例,着色器就不放了,比较简单 #define GLEW_STATIC #define STB_IMAGE_IMPLEMENTATION#include #include #includ ...

  6. unity鼠标控制镜头旋转_Unity3D实现鼠标控制视角转动|chu

    前面,学了物体的移动功能,现在来学一下C#实现鼠标控制摄像机(视角)移动. 代码如下: C#脚本(在Unity 5.5.1 下能运行): using System.Collections; using ...

  7. python键盘控制_Python 键盘/鼠标控制

    键盘控制 需要用到keyboard模块(pip install keyboard) 按键字符 #字符'1''a'...#控制'ctrl''alt''shift''enter''esc''f1'...# ...

  8. 无界鼠标:使用一套键盘鼠标控制多台电脑

    在办公室需要同时使用自己的电脑和公司的电脑,然而来回切换鼠标是真的麻烦,于是在网上找到并整合和相关方法,供大家参考使用: 无界鼠标百度云:链接:https://pan.baidu.com/s/1GI5 ...

  9. 鼠标控制视角wasd移动_无线款,轻量级,稳控制:雷蛇(Razer) 毒蝰终极版鼠标的快速体验...

    一.无线游戏鼠标的需求在哪里? 关注电竞外设对于用户,对于无线通讯技术应该是普遍持保留意见的.因为普遍认为无线通讯的稳定性会弱于有线. 但是随着技术的进步,目前已经可以实现更高效率的触控传输反馈.因此 ...

最新文章

  1. python协程异步原理_简单介绍Python的Tornado框架中的协程异步实现原理
  2. 文巾解题 175. 组合两个表
  3. JavaFX 中 FX 一词的由来
  4. 持续集成与自动化部署 - jenkins sonar代码质量管理平台 部署和基础使用(五)...
  5. 前端笔记-vue cli中使用router-link进行路由跳转
  6. 【服务端渲染】之 Vue SSR
  7. 去哪儿-19-detail-ajax
  8. 百度搜索遭遇“假德邦” 宣判结果来了...
  9. 令人赞叹的 MySQL
  10. Electron客户端的自动升级方案-2022版
  11. Excel如何批量设置行高
  12. 服务器防护是什么?为什么需要防护?
  13. python设置Excel单元格的数据有效性
  14. 关于勒索软件的硬道理:我们还没有准备好,这是一场与新规则的斗争,而且它的影响还没有接近顶峰。
  15. 求助vmbox更新之后打不开了
  16. surface pro 7 使用type c耳机问题
  17. 51nod 1213 二维曼哈顿距离最小生成树
  18. 在挑战中成长:CTO的生存与发展之道
  19. 怎么才能使用计算机,电脑说有人远程使用计算机,怎么才能开到机啊
  20. c语言基础循环练习题,C语言练习题:循环部分

热门文章

  1. CFA报考丨含金量最高的证书,在校期间千万别错过!
  2. android检查悬浮窗权限,Android 悬浮窗权限校验
  3. Sentinel系列4--- 实战限流篇
  4. MySQL数据库高可用HA实现
  5. tsconfig.json
  6. tengine php mysql_安装Tengine php mysql
  7. ipython的介绍
  8. 对当前虚拟货币问题的思考(下)
  9. php 微信jssdk分享
  10. 安卓视频播放器 仿今日头条视频播放控件----JiaoZiVideoPlayer