private Vector3 m_camRot;private Transform m_camTransform;//摄像机Transform public float m_rotateSpeed = 1;//旋转系数 public float m_speed = 1.5f;//初始移动速度 private float moveSpeed;//移动速度//记录加速度float x_m;float y_m;float z_m;float d;
  void Start(){m_camTransform = Camera.main.transform;m_camRot = Camera.main.transform.eulerAngles;}
  #region 相机跟随鼠标旋转void CameraRotate_Mouse(){if (Input.GetMouseButton(1)){//获取鼠标移动距离float rh = Input.GetAxis("Mouse X");float rv = Input.GetAxis("Mouse Y");// 旋转摄像机m_camRot.x -= rv * m_rotateSpeed;m_camRot.y += rh * m_rotateSpeed;}m_camTransform.eulerAngles = m_camRot;if (Input.GetMouseButton(2)){float rh = Input.GetAxis("Mouse X");float rv = Input.GetAxis("Mouse Y");//float mscrollWheelouseS = Input.GetAxis("Mouse ScrollWheel");transform.Translate(transform.up * -rv * m_rotateSpeed + transform.right * -rh * m_rotateSpeed, Space.World);}}#endregion
 void PlayerMove(){if (Input.GetKey(KeyCode.LeftShift)){moveSpeed =m_speed*3;}else if (Input.GetKeyUp(KeyCode.LeftShift)){moveSpeed = m_speed; }if (Input.GetKey(KeyCode.W)){z_m = z_m + Time.deltaTime * moveSpeed;transform.Translate( transform.forward * z_m, Space.World);}else if (Input.GetKeyUp(KeyCode.W)){z_m = 0;}if (Input.GetKey(KeyCode.S)){z_m = z_m - Time.deltaTime * moveSpeed;transform.Translate( transform.forward * z_m, Space.World);}else if (Input.GetKeyUp(KeyCode.S)){z_m = 0;}if (Input.GetKey(KeyCode.A)){x_m = x_m - Time.deltaTime * moveSpeed;transform.Translate( transform.right * x_m, Space.World);}else if (Input.GetKeyUp(KeyCode.A)){x_m = 0;}if (Input.GetKey(KeyCode.D)){x_m = x_m + Time.deltaTime * moveSpeed;transform.Translate( transform.right * x_m, Space.World);}else if (Input.GetKeyUp(KeyCode.D)){x_m = 0;}if (Input.GetKey(KeyCode.Q)){y_m = y_m - Time.deltaTime * moveSpeed;transform.Translate( transform.up * y_m, Space.World);}else if (Input.GetKeyUp(KeyCode.Q)){y_m = 0;}if (Input.GetKey(KeyCode.E)){y_m = y_m + Time.deltaTime * moveSpeed;transform.Translate( transform.up * y_m, Space.World);}else if (Input.GetKeyUp(KeyCode.E)){y_m = 0;}}
void Update(){PlayerMove();CameraRotate_Mouse();}

一键复制

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Move : MonoBehaviour
{private Vector3 m_camRot;private Transform m_camTransform;//摄像机Transform public float m_rotateSpeed = 1;//旋转系数 public float m_speed = 1.5f;//初始移动速度 private float moveSpeed;//移动速度//记录加速度float x_m;float y_m;float z_m;float d;void Start(){m_camTransform = Camera.main.transform;m_camRot = Camera.main.transform.eulerAngles;}#region 相机跟随鼠标旋转void CameraRotate_Mouse(){if (Input.GetMouseButton(1)){//获取鼠标移动距离float rh = Input.GetAxis("Mouse X");float rv = Input.GetAxis("Mouse Y");// 旋转摄像机m_camRot.x -= rv * m_rotateSpeed;m_camRot.y += rh * m_rotateSpeed;}m_camTransform.eulerAngles = m_camRot;if (Input.GetMouseButton(2)){float rh = Input.GetAxis("Mouse X");float rv = Input.GetAxis("Mouse Y");//float mscrollWheelouseS = Input.GetAxis("Mouse ScrollWheel");transform.Translate(transform.up * -rv * m_rotateSpeed + transform.right * -rh * m_rotateSpeed, Space.World);}}#endregionvoid PlayerMove(){if (Input.GetKey(KeyCode.LeftShift)){moveSpeed =m_speed*3;}else if (Input.GetKeyUp(KeyCode.LeftShift)){moveSpeed = m_speed; }if (Input.GetKey(KeyCode.W)){z_m = z_m + Time.deltaTime * moveSpeed;transform.Translate( transform.forward * z_m, Space.World);}else if (Input.GetKeyUp(KeyCode.W)){z_m = 0;}if (Input.GetKey(KeyCode.S)){z_m = z_m - Time.deltaTime * moveSpeed;transform.Translate( transform.forward * z_m, Space.World);}else if (Input.GetKeyUp(KeyCode.S)){z_m = 0;}if (Input.GetKey(KeyCode.A)){x_m = x_m - Time.deltaTime * moveSpeed;transform.Translate( transform.right * x_m, Space.World);}else if (Input.GetKeyUp(KeyCode.A)){x_m = 0;}if (Input.GetKey(KeyCode.D)){x_m = x_m + Time.deltaTime * moveSpeed;transform.Translate( transform.right * x_m, Space.World);}else if (Input.GetKeyUp(KeyCode.D)){x_m = 0;}if (Input.GetKey(KeyCode.Q)){y_m = y_m - Time.deltaTime * moveSpeed;transform.Translate( transform.up * y_m, Space.World);}else if (Input.GetKeyUp(KeyCode.Q)){y_m = 0;}if (Input.GetKey(KeyCode.E)){y_m = y_m + Time.deltaTime * moveSpeed;transform.Translate( transform.up * y_m, Space.World);}else if (Input.GetKeyUp(KeyCode.E)){y_m = 0;}}void Update(){PlayerMove();CameraRotate_Mouse();}
}

Unity 按键控制相机(移动、旋转、相机角度控制)相关推荐

  1. Unity 用于控制摄像机的旋转、远近

    /// <summary> /// 用于控制摄像机的旋转.远近 /// </summary> public class CameraTransform : MonoBehavi ...

  2. Unity摄像机控制插件移动旋转缩放聚焦自动居中

    目录 前言 一.主要特点 二.使用步骤 1.导入插件 2.拖入SR_Camera Prefab到Hierarchy场景中 3.设置场景中需要交互的物体和默认射线检测的地面层 4.限制摄像机的可移动范围 ...

  3. Unity手势控制物体球形旋转

    目的:当我想让物体绕Y轴旋转时,无论他当前的朝向都可以绕绝对Y轴转,同理X轴,Z轴.同时不可以有万向锁. 原理:当我们物体绕轴旋转时,其实是矩阵相乘,所以我们需要先算出当前要旋转角度的旋转矩阵,代码如 ...

  4. Unity鼠标控制物体360°旋转和点击移动

    一:操作 创建一个游戏对象(方块) 把代码挂在摄像机上 二:代码 public Camera ca;     public GameObject transformObj; Ray ray;     ...

  5. vue使用three.js 第一人称移动。与cs控制角色移动一样(第一人称旋转相机+控制相机移动)

    1注意:我是看官方案例写的,但是我是在vue上面写的,所以如果你不是用vue来做,有些东西需要自己改动.比如有些地方必须让this改为that,不然报错.个人建议如果有,会被其他方法修改的全部都改成 ...

  6. unity VR实现相机完美旋转

    思路:VR中的相机不可以直接移动.旋转,我们能做的就是控制相机的父物体去旋转.移动,来实现VR相机.这里有一个问题,就是直接控制父物体旋转,如果VR相机不处于(0,0,0)就会出现旋转偏差,VR相机离 ...

  7. Unity第三人称射击游戏的相机控制

    (关于其他几种角色移动的控制在我之前的博客有写到) 首先我们需要先理解一下第三人称相机控制的原理: 我们要实现的效果就是:获取鼠标的移动输入,转化成角色以及相机的旋转,通过鼠标输入Input.GetA ...

  8. Unity 触屏手势控制Camera平移旋转缩放

    Unity 触屏手势控制Camera平移旋转缩放 实现思路 单点触屏,位移增量控制相机平移: 两点触屏,两点位移控制相机前后移动(缩放):两点中一点不位移控制相机绕点旋转: 实现需要的API Touc ...

  9. OpenGL相机自由移动旋转缩放,四元数,欧拉角,LookAt

    OpenGL相机自由移动旋转缩放,四元数,欧拉角,LookAt 定义相机 摄像机位置 右轴 上轴 Look At 自由移动相机 左右移动 移动速度 视角移动 欧拉角 通过欧拉角计算实际的方向向量 缩放 ...

最新文章

  1. hdu 5438 Ponds 拓扑排序
  2. 错把一加当苹果,美国海关侵权大案糗大了:被网友无情嘲讽
  3. 笔记-项目范围管理-项目范围管理计划和需求管理计划
  4. Python3 Scrapy爬取猫眼TOP100代码示例
  5. css3怎么设置logo,纯CSS3实现的LOGO标志 ABN AMRO CSS3 logo
  6. .NET Core 3.0之创建基于Consul的Configuration扩展组件
  7. dotnetCore增加MiddleWare的Run,Use Map MapThen四个扩展方法
  8. n个小球放入m个盒子中_飞么盒子卫生巾自助售卖机前景
  9. Ubuntu 16.04通过Snap安装应用程序
  10. 2016年中国国际信息通信展览会在北京开幕
  11. exe可执行程序及堆栈分配(转载)
  12. 首个月球旅客!SpaceX将送普通人上太空,马斯克暗示首单来自日本
  13. crontab 简介
  14. Android NDK开发(1)----- Java与C互相调用实例详解
  15. java xml编译_IDEA将Maven项目中指定文件夹下的xml等文件编译进classes的方法
  16. 跟着小马哥学系列之 Spring AOP(Spring 事务(源码分析)上)
  17. Cesium离线地图极简教程
  18. FAT32、NTFS、exFAT的区别
  19. iOS开发-Tom猫
  20. Enhancement .

热门文章

  1. 软件测试缺陷 报告英文版,软件测试缺陷报告书.doc
  2. 常见的数学公式--随身记
  3. 全网最zui面zui详细关于ICP许可证办理指南
  4. Agistsoft Photoscan 在Build Mesh过程中出现“Bad Allocation”问题
  5. 新媒体管家插件永久停服了
  6. 智能DNS服务器搭建
  7. 漫谈BBR算法的收敛点和公平性
  8. docker本地镜像发布到阿里云镜像仓库
  9. 方向余弦矩阵(DCM)简介(转)
  10. 二进制整数转换为十进制整数[包括负数的转换]