Unity摄像机上下旋转镜头实现
Unity摄像机上下旋转镜头实现
- 1.上下顶点锁定
- 2.镜头上下了连续旋转
1.上下顶点锁定
将摄像机放在某对象下面作为子类
父类左右旋转,摄像机上下旋转
public class MoveCameraAlpha : MonoBehaviour
{[Header("旋转速度")][Range(0,1)]public float turnSpeed;//Main Camera的父类private Transform _cameraFather;private float _mousex;private float _mousey;private float xAxisClamp;private void Awake(){_cameraFather = transform.root;}private void Start(){Cursor.lockState = CursorLockMode.Locked;xAxisClamp = 0.0f;}private void Update(){if (Input.GetMouseButton(1)){_mousex = Input.GetAxis("Mouse X");_mousey = Input.GetAxis("Mouse Y");xAxisClamp += _mousey;//Debug.Log(xAxisClamp);if (xAxisClamp > 90.0f){xAxisClamp = 90.0f;_mousey = 0.0f;ClampXAxisRotationToValue(270.0f);}else if (xAxisClamp < -90.0f){xAxisClamp = -90.0f;_mousey = 0.0f;ClampXAxisRotationToValue(90.0f);}_cameraFather.Rotate(Vector3.up * _mousex);transform.Rotate(Vector3.left * _mousey);Vector3 res = new Vector3(transform.eulerAngles.x, transform.eulerAngles.y, 0);transform.eulerAngles = res;}}private void ClampXAxisRotationToValue(float value){Vector3 eulerRotation = transform.eulerAngles;eulerRotation.x = value;transform.eulerAngles = eulerRotation;}
}
或
public class MoveCameraAlpha : MonoBehaviour
{[Header("旋转速度")][Range(0,1)]public float turnSpeed;//Main Camera的父类private Transform _cameraFather;private float _mousex;private float _mousey;private float xAxisClamp;private void Awake(){_cameraFather = transform.root;}private void Start(){Cursor.lockState = CursorLockMode.Locked;xAxisClamp = 0.0f;}private void Update(){if (Input.GetMouseButton(1)){_mousex = Input.GetAxis("Mouse X");_mousey = Input.GetAxis("Mouse Y");xAxisClamp -= _mousey;//Debug.Log(xAxisClamp);xAxisClamp = Mathf.Clamp(xAxisClmap,-90f,90f);_cameraFather.Rotate(Vector3.up * _mousex);transform.localRotation = Quaternion.Euler(xAxisClamp,0f,0f);}}
}
2.镜头上下了连续旋转
public class MoveCamera : MonoBehaviour
{[Header("移动速度")]public float moveSpeed;[Header("旋转速度")][Range(0,1)]public float turnSpeed;private float _hor;private float _ver;private float _mousex;private float _mousey;private float _yaw;private float _pitch;private void Start(){Cursor.lockState = CursorLockMode.Locked;_yaw = transform.eulerAngles.y;_pitch = transform.eulerAngles.x;}private void Update(){if (Input.GetMouseButton(1)){_hor = Input.GetAxis("Horizontal");_ver = Input.GetAxis("Vertical");transform.position += _hor * transform.right * Time.deltaTime * moveSpeed + _ver * transform.forward * Time.deltaTime * moveSpeed;_mousex = Input.GetAxis("Mouse X");_mousey = Input.GetAxis("Mouse Y");//方法一,到顶点会快速水平旋转// transform.Rotate(-_mousey, _mousex, 0);// Vector3 res = new Vector3(transform.eulerAngles.x, transform.eulerAngles.y, 0);// transform.eulerAngles = res;//方法二,没问题的实现_yaw = (_yaw + _mousex) % 360f;_pitch = (_pitch - _mousey) % 360f;transform.rotation = Quaternion.AngleAxis(_yaw, Vector3.up) * Quaternion.AngleAxis(_pitch, Vector3.right);//方法三,到顶点会水平旋转180度// transform.forward = Quaternion.AngleAxis(_mousex, Vector3.up) * transform.forward;// transform.forward = Quaternion.AngleAxis(-_mousey, Vector3.right) * transform.forward;}}
}
Unity摄像机上下旋转镜头实现相关推荐
- 【Unity】Unity实现鼠标控制摄像机围绕物体旋转镜头 滑轮控制远近
在游戏和一些产品展示等项目中会有让摄像机围绕某个物体进行旋转这种需求 下面展示的代码是个删减版的 只保留了主要功能 限制的方面都删除了 在原有的代码中有 移动摄像机功能 围绕的点不做限制每 ...
- Unity摄像机对象锁定旋转运镜模拟
问题简述 在3D模式下如何模拟实现Unity摄像机对象锁定旋转运镜,可以分为两个部分,第一是实现对象锁定,第二是实现旋转运镜.对象锁定就是无论摄像机如何运动,始终保持对象位于摄像机成像区域的固定位置, ...
- unity中3dUI或者模型始终面向摄像机,跟随摄像机视角旋转丨视角跟随丨固定视角
视角跟随 本脚本为一个目标跟随 unity中3dUI或者模型始终面向摄像机,跟随摄像机视角旋转 使用方法超级简单,对于一个资深的Ctrl+cv程序极为友好 不多讲解直接上代码 代码模块 public ...
- Unity 用于控制摄像机的旋转、远近
/// <summary> /// 用于控制摄像机的旋转.远近 /// </summary> public class CameraTransform : MonoBehavi ...
- 摄像机标定以及镜头畸变
摄像机标定其本质就是计算摄像机的内参和外参.关于标定板上的世界坐标对应到图像像素坐标的过程这里就不做推导,网上太多博客都有详细推导过程.本篇主要说明摄像机标定原理里的几个要点: 1. 外参矩阵所含旋转 ...
- unity 摄像机追随指定物体
unity 摄像机追随指定物体, 摄像机离远离近,围绕物体旋转using System.Collections; using System.Collections.Generic; using Uni ...
- unity使ui面向镜头_pihqcam面向相机的软件ui
unity使ui面向镜头 Note: This article is part of a series of articles aimed at describing the complete pro ...
- Unity摄像机控制
Unity摄像机控制: 控制摄像机移动,旋转,缩放,跳跃:有视野限制,且摄像机高度越高运动幅度越大. 视野缩放:通过向前滚动鼠标滑轮可拉近视野,向后滚动鼠标滑轮可拉远视野. 视野移动:按住鼠标左键不放 ...
- Unity摄像机拍照并显示在小窗口里(RenderTexture和RawImage将摄像机图像渲染到GUI屏幕上小图显示)
Unity摄像机拍照并显示在小窗口里(RenderTexture和RawImage将摄像机图像渲染到GUI屏幕上小图显示) 1.实现效果和实现思想 1.实现效果和实现思想 实现效果: 本文使用飞机模型 ...
- 网络摄像机·监控摄像机用 镜头驱动芯片MS41909 功能对标BU24036MW
网络摄像机·监控摄像机用 镜头驱动芯片MS41909 功能对标BU24036MW 描述 MS41909 是一款用于网络摄像机和监控摄像机的镜头驱动芯片. 通过电压驱动方式以及扭矩纹波修正技术,实现了超 ...
最新文章
- makefile学习(转载)
- 一天一道算法题--5.30---递归
- linux shell 内建命令,什么是Bash Shell的内建(build in)命令
- linux动态链接库的创建
- 我发现我对人类活动的认识开始有一点点变化了
- Postfix 故障记录
- 【经验】JavaScript
- Tcp协议socket通信数据包粘包问题分析及解决方案
- python 调用sqldr_SQLLDR用武之地
- H5前端的关于像素解释
- MSP430 MSP430F5529 LaunchPad实验板
- android 简易的猜拳小游戏
- Unity3D 本地数据持久化记录存储
- return 的含义
- “爆打”团队阿尔法发布 以及 第四周任务
- O2O、C2C、B2B、B2C
- 免费外链图片网站收集
- 软件测试之软件系统测试
- 5.7 维吉尼亚密码(已更新)
- 阿超记载类中的回调函数
热门文章
- 工作缺点和不足及措施_个人工作问题不足20条以及改进措施
- 计算机机房的消防验收,机房消防标准方案.doc
- 第三方支付牌照会改变在线支付现状吗?
- 计算机网络ip地址分类6,c类ip地址划分6个子网
- 巴菲特致股东的信pdf_股神巴菲特发布致股东公开信,接班人仍是个谜
- MSOCache 文件夹是否可以删除
- 轉載:2006中国大陆企业慈善捐赠100榜
- 新西兰大学计算机,新西兰大学计算机排名
- 如何创作属于自己的NFT?
- linux检查语法错误的命令,使用CHECKSYNTAX命令检查RMAN脚本是否存在语法错误