Unity 摄像机旋转初探
接触打飞机的游戏时都会碰见把摄像机绕 x 轴顺时针旋转 90°形成俯瞰的视角的去看飞船。也没有多想,就感觉是坐标系绕 x 轴旋转 90°完事了。但是昨天用手比划发一下发现不对。我就想这样的话绕 x 轴顺时间选择 90°坐标系旋转了,Game 视图中的平面还是 xy ,可实际为什么平面变成了 xz 呢?
摄像机不是其他的 gameobject 的 child 且 rotation 是 (0, 0, 0) 此时可以左手坐标系查看 Game 视图中的物体,Game 视图平面在 xy 平面,z 轴表示物体的远近。如下图所示。物体顺着蓝色箭头(z 轴)的方向移动,则会越来越远,此时物体的 z 轴坐标值越来越大。

此时然后我以 0 30 60 90 调节摄像机的 x 轴上的 rotation ,发现摄像机照射的区域也在旋转。当摄像机的 rotation 是 (90, 0, 0) 时如下图所示。图中蓝色箭头此时是 y 轴,虽然箭头向下,但并不表明顺着这个箭头移动 y 轴值的会越来越大,相反反而会越来越小,但是顺着蓝色箭头移动在 Game 视图中物体是越来越远的(注意:我是在 Unity 5.2.3 版本)。

经过思考后我理解了为什么摄像机绕 x 轴旋转 90°Game 视图中的平面就变成了 xz 平面。
- 摄像机绕 x 轴旋转,仅仅是摄像机的照射区域发生了变化,从原来的基础上顺时针旋转了 90°。如果 gameobject 不是摄像机的 child ,此时不影响到 gameobject 。
- 虽然非摄像机的 child 的 gameobject 不会受摄像机的旋转影响,但是 gameobject 移动在 Game 视图中显示发生了变化。因为可以理解摄像机本身的坐标系没有旋转,而是投射区域旋转,投射区域绕 x 轴顺时针旋转 90°时(假设以前的 rotation 是 (0, 0, 0) ),刚好投射平面(也就是 Game 视图)从 xy 平面变成了 xz 平面。
- 我在 Scene 视图中被蓝色箭头的指向误导了,以为蓝色箭头就是 z 轴,顺着这个箭头移动 z 轴的坐标值就会增大,很显然不是这样。所以就不明白 Unity 这样显示箭头是为了什么目的。我印象中在 Unity4.6 中摄像机绕 x 轴旋转时,Scene 视图中的摄像机坐标系显示是没有变化的,看来不同版本也是有差别的。
- 上图用 Game 视图表示摄像机的投射平面不是太准确,实际情况下很有可能多个摄像机在 Game 视图中显示内容呢。这里我们就一个摄像机,就这样表述了。
Unity 摄像机旋转初探的更多相关文章
- Unity摄像机围绕物体旋转两种实现方式
第一种,使用Transform 函数 RotateAround. 代码如下: public Transform target;//获取旋转目标 private void camerarotate() ...
- Unity 摄像机组件
今天看一下unity3d里面的摄像机是怎么调用和操作的. 打开unity3d新建一个工程.在我们打开工程的时候unity3d会主动添加一个Main Camera,在Hierartchy视图中.点击Ma ...
- Unity 摄像机Clear Flags和Culling Mask属性用途详解
原文地址:http://blog.csdn.net/tanmengwen/article/details/8798231 1.简述两个属性 1.1 Clear Flags 清除标记 每个相机在渲染时会 ...
- Unity摄像机的正交视图与透视图
Unity Camera的两种模式 Projection:投射,投影 Unity的MainCamera的Projection可选择Perspective[透视],Orthographic[正交],是指 ...
- unity的旋转
绕着一个点旋转 : transform.RotateAround(Vector3.zero, Vector3.up, speed* Time.deltaTime ); 第一个参数,点的位置.第二个参数 ...
- [转]Unity 3D旋转矢量方向及二维平面基于一点选择另一点(Rotate a Vector3 direction & Rotate a point about another point in 2D )
http://specialwolf.blog.163.com/blog/static/124466832201301332432766/ ****************************** ...
- unity 对象旋转,自转
1.对象具体的围绕哪个轴旋转,对应的设置值: transform.Rotate(new Vector3(1,0,0)); //绕x轴旋转 //默认是物体围绕世界坐标的XYZ轴旋转,即物体绕着世 ...
- Creator4.2建模心得与技巧1——树的建立与跟随摄像机旋转
Creator建模: 树一般在虚拟现实程序中都用面来实现,一种方法是通过两个面相互垂直成90度叠放在一起,另一种方法是让树面正对着视角一起旋转.这里主要说一下第二种方法. 主要思路:把树面一直正对着摄 ...
- Qt irrlicht(鬼火)3D引擎 摄像机旋转问题
点击打开链接Irrlicht中的摄像有一个函数 setUpVector() if (m_device != 0 ) { core::vector3df rotation(y,x,0.f); m_cam ...
随机推荐
- Koa2 + Mongoose + Log4js 持久化日志
代码地址如下:http://www.demodashi.com/demo/12466.html 之前做的项目是采用 Express 框架进行搭建的,其中的日志管理采用了 winston + Post ...
- DevOps企业实践与架构
原文地址:http://www.sohu.com/a/112351816_355140 什么是DevOps及其误区 DevOps概念从2009年提出已有8个年头.可是在8年前的那个时候,为什么DevO ...
- svn自动部署
版本库目录hooks下创建post-commit.bat TortoiseProc.exe /command:update /path:"E:\web_server\sial\" ...
- 数据结构(Java语言)——Stack简单实现
栈是限制插入和删除仅仅能在一个位置上进行的表.该位置是表的末端,叫做栈的顶top.对栈的基本操作有进栈push和出栈pop,前者相当于插入.后者这是删除最后插入的元素. 栈有时又叫先进先出FIFO表. ...
- POJ 2253 Frogger(最小最大距离)
题意 给你n个点的坐标 求第1个点到第2个点的全部路径中两点间最大距离的最小值 非常水的floyd咯 #include<cstdio> #include<cmath> #i ...
- onvif 开发之video streamer---onvif实现功能和经验
目录(?)[-] 一产生onvif源码框架 从wsdl生成C头文件 从头文件生成源码框架 二创建soap运行环境 三RTSP视频对接 实现GetCapabilities命令 实现GetServices ...
- 最简单的PHP开发环境搭建
近期发现一个非常easy的,适合刚開始学习的人的PHP开发环境,整个环境仅仅有三样东东,PHP ,APACHE , MYSQL可是对于初学PHP的人来说,己经足够了. 假设有兴趣的话能够直接去百度PN ...
- bash学习记录
bash: 管理员: 提示符# 普通用户:提示符$ 环境变量 A=3(变量是指内存空间,A指的是内存空间的名称-变量标示符) PS1 \u@\h:\w\$ \u用户名 \h主机名 \w工作目录的 ...
- 使用 Django1.11搭建blog项目
使用Django搭建blog项目 简单设置: http://blog.csdn.net/w_e_i_/article/details/70761604 模板渲染: http://blog.csdn.n ...
- 剑指Offer:数组中出现次数超过一半的数字【39】
剑指Offer:数组中出现次数超过一半的数字[39] 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如,输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于这 ...