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

用四元素实现的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. 物资管理信息系统5 -- 删除用户界面
  2. 网站推广专员浅析关键词筛选决定网站推广的排名与流量
  3. SpringMVC 的使用映射路径 mvc:resources
  4. 《系统集成项目管理工程师》必背100个知识点-87系统文档验收
  5. 软件工程-pair work
  6. Linux 内存管理与系统架构设计
  7. linux链接达梦数据库,linux下面 达梦数据库的JDBC链接
  8. Ext.tree.Panel示例
  9. 编程网站 Perl.com 被劫,售价 19 万美元
  10. python 菜单调用_python---权限管理和菜单生成
  11. Vegas安装出现问题怎么办?
  12. 袁玉玮:简介人工智能在基金界的应用现状(四)
  13. Altium Designer 09简易教程(一)
  14. 屏保程序学中玩(下)
  15. 如何将域名转换为ip
  16. 《人类简史》《未来简史》读后感作文5000字
  17. SQLServer2000的JDBC驱动
  18. Java实现 蓝桥杯VIP 算法提高 文化之旅
  19. 赛码网: 小明很喜欢打字,今天小红给了小明一个字符串。
  20. 想不想恶搞你的朋友?试试关不掉的弹窗(vbs)

热门文章

  1. labview GSM上位机监控系统~温度监控,液位监控,粉尘浓度监控,远程遥控~串口通讯~短信远程功能~数据采集,数据存储,报表输出~
  2. 元胞自动机matlab代码 交通流,交通流中的NaSch模型及MATLAB代码元胞自动机
  3. Spring boot将项目的静态资源提取到项目外面的文件夹
  4. linux图形界面登陆失败
  5. 如何在Windows系统下多开微信
  6. 保障电销业务开展,智能电销系统企业首选
  7. 看完通辽可汗小约翰之后应该掌握的英语词汇 01 外交类
  8. 51单片机 | 实现SMG12864液晶显示器操作
  9. 校企合作趋紧密化:联想集团CTO芮勇出任东南大学人工智能双院兼职院长
  10. 如何迎新年?手工自制2021年精美简朴行事历