unity 用四元素实现摄像机的跟随鼠标旋转,缩放
此文章中的摄像机是第三人称游戏摄像机,脚本挂载在游戏人物身上
用四元素实现的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 用四元素实现摄像机的跟随鼠标旋转,缩放相关推荐
- 元素跟随鼠标旋转,未待完续。。。。
本节主要讲的是元素跟随鼠标旋转主要是用到了原生js更改css的transform属性,这个属性下有很多方法,下面就只讲关于本节内容的几种方法,其他的可以私下自己去看一看 translate(x,y) ...
- Unity——指针跟随鼠标旋转,GTA武器菜单选择等效果实现
GTA武器菜单选择 简单实现这种效果 Demo的效果 以下是主要代码 using System.Collections; using System.Collections.Generic; using ...
- Unity摄像机控制插件移动旋转缩放聚焦自动居中
目录 前言 一.主要特点 二.使用步骤 1.导入插件 2.拖入SR_Camera Prefab到Hierarchy场景中 3.设置场景中需要交互的物体和默认射线检测的地面层 4.限制摄像机的可移动范围 ...
- unity摄像机跟随鼠标旋转
第一种 float vertical = Input.GetAxis("Mouse X") float horizontal = Input.GetAxis("Mouse ...
- unity拖拽UI生成Cube并跟随鼠标移动,放置点可放下
代码: using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine ...
- Unity 3D系列 摄像机围绕主角进行旋转、缩放
一.开发环境 Unity版本: 2020.1.0f1 二.建立摄像机结构 1.结构如下图 2.将CameraZoomContainer的Position X坐标设置为12,如图 3.将CameraUp ...
- 基于四元素法的捷联惯导姿态更新算法
摘要 本文主要介绍了机载捷联惯导系统常用的姿态更新算法--四元素法,并重点介绍了利用四元素法进行姿态更新的一般过程. 关键词:四元素法,连贯导,姿态 1 引言 ...
- unity中3dUI或者模型始终面向摄像机,跟随摄像机视角旋转丨视角跟随丨固定视角
视角跟随 本脚本为一个目标跟随 unity中3dUI或者模型始终面向摄像机,跟随摄像机视角旋转 使用方法超级简单,对于一个资深的Ctrl+cv程序极为友好 不多讲解直接上代码 代码模块 public ...
- unity碰撞检测函数,碰撞信息获取,触发检测,使用粒子系统创建火焰,创建动画(火光闪烁),导航系统,通过导航系统控制人物移动,控制摄像机的跟随,控制角色动画播放
碰撞检测函数 private void OnCollisionEnter(Collision collision){print("OnCollisonEnter");}privat ...
最新文章
- Java 中常用缓存Cache机制的实现
- HashMap 面试 21 问,这次要跪了!
- Linux字符驱动程序的基本结构与函数
- Intent传递数据时,可以传递哪些类型数据
- 护考人机对话用计算机吗,2018护士执业资格考试人机对话怎么考 有什么注意事项...
- Linux中文件查找方法大全
- 计算机网络ip地址博客,计算机网络中,这些IP地址你知道吗?
- stringbuilder 拼接语句缺失右括号_C++编程基础: 6. 语句、表达式和运算符
- 十大Java编程工具
- 蓝丝雨零基础学习按键精灵VIP教程合集
- 关于cidaemon.exe进程CPU占用率高的解决
- 微众银行电话面试java_微众银行面试经验
- r7 6800u核显相当于什么显卡
- 时空、光年、过去与现在
- 如何快速且不失真剪切与合并视频?如何将视频快速转成MP4格式?无需渲染!视频秒转MP4,剪辑合并!
- X1 Carbon wifi 8260 无线网卡驱动安装 backports
- 【校园网故障】HTTP ERROP 502和DNS PROBE STARTED、DNS Probe Finished No Internet的解决方法
- input隐藏边框轮廓、输入框输入提示
- javascript H5解决手机拍照图片被旋转问题
- MAC +python+mitmdump爬取香哈菜谱app端信息
热门文章
- 安卓APP源码和报告——音乐播放器
- 网易云音乐称酷狗抄袭计算机,网易云音乐称酷狗抄袭 还一一附上了两款应用的功能对比截图...
- thinkjs连接mysql_ThinkJS入门+实例(实现认证权限等基本功能)
- 加 xjjdog0 好友,朋友圈送大红包!
- 重庆地税吃螃蟹 数据库虚拟化支撑大集中
- 林学菜鸟---R语言点格局分析
- div css sprites精灵-CSS图像拼合 CSS贴图定位网页背景素材图片拼合定位布局技术教程
- aptio设置图解教程2012中文_u盘装系统bios设置图解|u盘重装系统设置bios教程
- 中国营销人的第6项修炼
- Mask rcnn 代码复现