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 ...
随机推荐
- js 解析json字符串
server端返回的数据例如以下: {"list":[{"id":1,"name":"汉族"},{"id&qu ...
- React学习之受控和非受控组件
受控组件是通过事件完成对元素value的控制,反之就是非受控组件. 1.受控组件的value通过onChange事件来改变,非受控不需要通过事件来改变value. 2.受控组件通过事件通过setSta ...
- Chrome自带恐龙小游戏的源码研究(三)
在上一篇<Chrome自带恐龙小游戏的源码研究(二)>中实现了云朵的绘制和移动,这一篇主要研究如何让游戏实现昼夜交替. 昼夜交替的效果主要是通过样式来完成,但改变样式的时机则由脚本控制. ...
- hadoop修改主机名遇到的坑
正确的修改方式 CentOS修改主机名(hostname) 需要修改两处:一处是/etc/sysconfig/network,另一处是/etc/hosts,只修改任一处会导致系统启动异常.首先切换到r ...
- sublime3 支持 jsx 语法
添加几个插件即可在js中快速写html babel 可以识别React,并高亮显示ES6 command+shift+p -> install package -> babel 使用 在打 ...
- maven新建项目报错
创建了一个maven项目,报错 Errors occurred during the build. Errors running builder 'Maven Project Builder' on ...
- Intellj IDEA光标替insert状态,back键无法删除内容
Intellj IDEA光标为insert状态,无法删除内容导入项目后,发现打开java文件的光标是win系统下按了insert键后的那种宽的光标,并且还无法删除内容,且按删除(delete)键也只见 ...
- JavaWeb学习总结第二篇--第一个JavaWeb程序
JavaWeb学习总结第二篇—第一个JavaWeb程序 最近我在学院工作室学习并加入到研究生的项目中,在学长学姐的带领下,进入项目实践中,为该项目实现一个框架(用已有框架进行改写).于是我在这里记录下 ...
- Oracle 10g ORA-12154: TNS: could not resolve the connect identifier specified 问题解决! 我同事遇到的问题。 username/
Oracle 10g ORA-12154: TNS: could not resolve the connect identifier specified 问题解决! 我同事遇到的问题. userna ...
- IntelliJ IDEA打可执行jar包
<plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <config ...