此文章中的摄像机是第三人称游戏摄像机,脚本挂载在游戏人物身上

用四元素实现的unity摄像机跟随鼠标旋转缩放,并且有障碍物遮挡的时候摄像机会自动往前移。

float MouseZ = -(Input.GetAxis("Mouse ScrollWheel") * WheelSpeed);if ((EyelineLength + MouseZ) < 2.0f){EyelineLength = 2.0f;}else{if ((EyelineLength + MouseZ) > 10.0f){EyelineLength = 10.0f;}else{EyelineLength += MouseZ;}}if (Input.GetMouseButton(1) && !EventSystem.current.IsPointerOverGameObject()){float MouseX = Input.GetAxis("Mouse X");float MouseY = Input.GetAxis("Mouse Y");Quaternion RotaY = Quaternion.AngleAxis(MouseX * RotateSpeed, Vector3.up);EyelineDir = RotaY * EyelineDir;Vector3 _EyelineRightDir = EyelineDir;_EyelineRightDir.y = 0.0f;_EyelineRightDir.Normalize();RotaY = Quaternion.AngleAxis(-90.0f, Vector3.up);_EyelineRightDir = RotaY * _EyelineRightDir;Vector3 _EyelineDir = EyelineDir;Quaternion RotaX = Quaternion.AngleAxis(-MouseY * RotateSpeed, _EyelineRightDir);_EyelineDir = RotaX * _EyelineDir;Vector3 _EyelineNoYDir = EyelineDir;_EyelineNoYDir.y = 0.0f;_EyelineNoYDir.Normalize();float Angle = Vector3.Angle(_EyelineDir, _EyelineNoYDir);if ((Angle < 75.0f) && (Angle > 10.0f)){EyelineDir = _EyelineDir;}}Ray _ray = new Ray();RaycastHit _hitpoint;_ray.origin = transform.position + OffsetPos;_ray.direction = EyelineDir;if (Physics.Raycast(_ray, out _hitpoint, EyelineLength)){GameCamera.transform.position = _hitpoint.point - EyelineDir * 0.1f;}else{GameCamera.transform.position = transform.position + OffsetPos + EyelineDir * EyelineLength;}GameCamera.transform.LookAt(transform.position + OffsetPos);

其中的OffsetPos = new Vector3(0.0f, 0.6f, 0.0f);

EyelineDir = GameCamera.transform.position - (transform.position + OffsetPos);

EyelineLength = EyelineDir.magnitude;

旋转速度RotateSpeed可以自行调整

unity 用四元素实现摄像机的跟随鼠标旋转,缩放相关推荐

  1. 元素跟随鼠标旋转,未待完续。。。。

    本节主要讲的是元素跟随鼠标旋转主要是用到了原生js更改css的transform属性,这个属性下有很多方法,下面就只讲关于本节内容的几种方法,其他的可以私下自己去看一看 translate(x,y) ...

  2. Unity——指针跟随鼠标旋转,GTA武器菜单选择等效果实现

    GTA武器菜单选择 简单实现这种效果 Demo的效果 以下是主要代码 using System.Collections; using System.Collections.Generic; using ...

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

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

  4. unity摄像机跟随鼠标旋转

    第一种 float vertical = Input.GetAxis("Mouse X") float horizontal = Input.GetAxis("Mouse ...

  5. unity拖拽UI生成Cube并跟随鼠标移动,放置点可放下

    代码: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine ...

  6. Unity 3D系列 摄像机围绕主角进行旋转、缩放

    一.开发环境 Unity版本: 2020.1.0f1 二.建立摄像机结构 1.结构如下图 2.将CameraZoomContainer的Position X坐标设置为12,如图 3.将CameraUp ...

  7. 基于四元素法的捷联惯导姿态更新算法

    摘要          本文主要介绍了机载捷联惯导系统常用的姿态更新算法--四元素法,并重点介绍了利用四元素法进行姿态更新的一般过程.        关键词:四元素法,连贯导,姿态 1 引言      ...

  8. unity中3dUI或者模型始终面向摄像机,跟随摄像机视角旋转丨视角跟随丨固定视角

    视角跟随 本脚本为一个目标跟随 unity中3dUI或者模型始终面向摄像机,跟随摄像机视角旋转 使用方法超级简单,对于一个资深的Ctrl+cv程序极为友好 不多讲解直接上代码 代码模块 public ...

  9. unity碰撞检测函数,碰撞信息获取,触发检测,使用粒子系统创建火焰,创建动画(火光闪烁),导航系统,通过导航系统控制人物移动,控制摄像机的跟随,控制角色动画播放

    碰撞检测函数 private void OnCollisionEnter(Collision collision){print("OnCollisonEnter");}privat ...

最新文章

  1. Java 中常用缓存Cache机制的实现
  2. HashMap 面试 21 问,这次要跪了!
  3. Linux字符驱动程序的基本结构与函数
  4. Intent传递数据时,可以传递哪些类型数据
  5. 护考人机对话用计算机吗,2018护士执业资格考试人机对话怎么考 有什么注意事项...
  6. Linux中文件查找方法大全
  7. 计算机网络ip地址博客,计算机网络中,这些IP地址你知道吗?
  8. stringbuilder 拼接语句缺失右括号_C++编程基础: 6. 语句、表达式和运算符
  9. 十大Java编程工具
  10. 蓝丝雨零基础学习按键精灵VIP教程合集
  11. 关于cidaemon.exe进程CPU占用率高的解决
  12. 微众银行电话面试java_微众银行面试经验
  13. r7 6800u核显相当于什么显卡
  14. 时空、光年、过去与现在
  15. 如何快速且不失真剪切与合并视频?如何将视频快速转成MP4格式?无需渲染!视频秒转MP4,剪辑合并!
  16. X1 Carbon wifi 8260 无线网卡驱动安装 backports
  17. 【校园网故障】HTTP ERROP 502和DNS PROBE STARTED、DNS Probe Finished No Internet的解决方法
  18. input隐藏边框轮廓、输入框输入提示
  19. javascript H5解决手机拍照图片被旋转问题
  20. MAC +python+mitmdump爬取香哈菜谱app端信息

热门文章

  1. 安卓APP源码和报告——音乐播放器
  2. 网易云音乐称酷狗抄袭计算机,网易云音乐称酷狗抄袭 还一一附上了两款应用的功能对比截图...
  3. thinkjs连接mysql_ThinkJS入门+实例(实现认证权限等基本功能)
  4. 加 xjjdog0 好友,朋友圈送大红包!
  5. 重庆地税吃螃蟹 数据库虚拟化支撑大集中
  6. 林学菜鸟---R语言点格局分析
  7. div css sprites精灵-CSS图像拼合 CSS贴图定位网页背景素材图片拼合定位布局技术教程
  8. aptio设置图解教程2012中文_u盘装系统bios设置图解|u盘重装系统设置bios教程
  9. 中国营销人的第6项修炼
  10. Mask rcnn 代码复现