创建游戏世界的第一步,就是创建一个一个的游戏对象。当然,大部分的游戏对象都是3D模型,是需要先导入到Unity工程里面后再使用的。这里,我们使用Unity自带的一些基本游戏对象来说明场景中的一些基本操作。在DirectX的课程中,我们讲过,游戏物体的最基本的操作就是三个世界变换:移动,旋转和缩放。至于取景变换和投影变换主要由摄像机对象来完成的,我们可以调整摄像机的位置属性和其他属性来间接的调整这两个变换。
首先,我们先来研究一下移动,旋转和缩放三个世界变换矩阵。我们通过菜单栏GameObject -> 3D Object -> Cube来创建一个立方体进行演示。
接下来,我们就会在层次视图和场景视图中看到新创建的立方体游戏对象。
同时,我们还可以在检视视图中看到立方体的一些属性
上图中,每一个组件名称的前面都有一个可以折叠的三角按钮,可以方便我们折叠组件哦。在检视视图中的第一个“Transform”组件中的“Position”的XYZ值都改成0,也就是说,这个立方体处在世界坐标系的原点(0,0,0)的位置。这个如果大家看过DirectX的课程内容的话,对这个应该非常熟悉了,不需要过多的解释了。有了参照物之后,我们就容易进行场景操作的讲解了。Cube(Mesh Filter)是网格组件,代表了立方体的网格信息;Mesh Renderer是渲染组件,用于显示立方体;Box Collider是碰撞体组件,用于碰撞检测。这个组件的使用,我们会在后面的章节中介绍。
为了能够更好的编辑Cube立方体,我们需要能够从各个不同的角度去观察它,而后才能编辑它。那么接下来我们介绍Scene场景“视角”的变换操作。注意,不是Game场景的“视角”变换哦。
在3D场景中,Scene 视图类似于3ds max的透视图。场景视图辅助图标 (Scene Gizmo) 显示在Scene视图的右上角。此控件用于显示 Scene 视图摄像机(不是游戏里面的Main Camera摄像机哦)的当前方向,并允许修改Scene 视图的视角和投影模式。如下所示:
这个就类似于3ds max中右上角的ViewCube,都是用来控制当前场景摄像机的视角。点击四个方向的圆锥体(红色X轴,绿色Y轴,蓝色Z轴),可以切换视角,例如:Right右视图,Left左视图,Back后视图,Top顶视图,Bottom底视图(共六个方向)。这种方式的调整,使用并不是很多,我们主要还是通过鼠标或键盘来控制场景视图的视角变换。
1.鼠标中键拖动来移动Scene视图视角。
2.鼠标右键拖动来旋转Scene视图视角。
3.鼠标中键滚动来缩放Scene视图视角。
在这里,我们还是要跟3ds max中的操作做一个对比:
3ds max视角平移:鼠标中键拖动
3ds max视角旋转:按住 Alt 和 鼠标中键拖动
3ds max视角缩放:鼠标中键滚动
两者的区别在于视角旋转,Unity是鼠标右键拖动,3ds max中则是Alt + 鼠标中键。也就是说,3ds max中完全是通过中键来完成视角的操作。因为中键只有滚动和拖动两种操作,因此3ds max采用增加alt辅助键的方式来实现统一使用中键完成视角操作的一致性。而Unity并没有这样设计,而是采用右键拖动来完成旋转,因为很多的3D游戏中均是采用此种方式进行视角旋转的(我猜是这个原因吧!)。这里再次强调一下,以上的视角操作针对的是Scene场景视图(就是操作Scene Camera),目的是方便我们编辑游戏对象(方便我们创建游戏世界)。
接下来重点介绍游戏对象的移动,旋转和缩放操作,也就是我们上文提到的世界三大变换矩阵。在工具栏中,有对应的命令,如下图所示:
上图中工具栏的快捷键分别是Q,W,E,R,T,Y,熟悉3ds max的对这三种操作应该非常熟悉了。第一个手型按钮(Q键)就是视角平移操作,等效于鼠标中键拖动。剩下的三个依次是移动 (Move)、旋转 (Rotate)、缩放 (Scale),注意他们操作对象是游戏对象。我们可以点击选中我们刚刚创建的“cube立方体”,然后分别进行W移动,E旋转,R缩放。
简单的操作一下,我们就能明白,红色,绿色和蓝色分别代表x,y,z三个方向的变换操作。具体的操作,我们就不演示了,大家可以点击选中三种颜色的线段后拖动鼠标即可看到效果。接下来的T是矩形变换工具(Rect Tool),主要用于编辑UI控件,接下来的Y是综变换工具,因为它融合了移动,旋转和缩放三种变换,最后的Editor Tool则是自定义按钮工具。
我们之前DirectX课程中介绍过,游戏对象的移动,旋转和缩放是相对于游戏对象的轴心而言的。Unity中同样也有类似的操作,就是工具栏变换命令后面的Center和Local选项。其中,Pivot和Center是一组切换,Pivot就是游戏对象的轴心(模型坐标系的原点),Center则是游戏对象的中心。我们之前介绍过,游戏对象的中心不一定是轴心。例如,一个人物模型的轴心是脚底中间位置,而中心则是肚脐的位置。后面的Local和Global则是模型坐标系(也称之为本地坐标系)和世界坐标系,两者也是一组切换。如果对这两个概念仍然不理解的,建议回头看看DirectX课程,后期的游戏对象的移动或旋转,都必须明确轴心和坐标系。通常情况下,我们使用模型本地坐标系来对游戏对象进行变化操作。
接下来,我们顺便把工具栏后面几个重要的按钮简单介绍一下。
他们依次是播放,暂停和单步执行命令,其实就是控制游戏的运行和调试。
最后我们继续介绍工具栏最后的内容
第一个是Plastic SCM版本控制工具,我们暂时用不到。
第二个是 Unity提供的各种服务,我们暂时用不到。
第三个是Unity的登录账号。
第四个是Layer(层)下拉选项,Unity默认创建了一些层,我们也可以自定义一些层。
第五个是Unity的界面布局,你可以将工程视图,层次视图或者检视视图等等按照自己喜好摆放在窗体的任意位置,并保存为一个布局方式。个人还是比较倾向于默认的布局方式。
在Scene 视图中,大家可以看到灰色的地面上面有很多的栅格,这个跟3ds max是一样的。可通过将游戏对象对齐(移动)到最近的栅格位置来帮助精确对齐游戏对象。我们可以设置栅格线在 Scene 视图中显示的大小。通过菜单栏Edit > Grid and Snap Settings打开。
本章节虽然内容比较少,但是需要大家熟练掌握场景视图视角的操作,以及游戏对象的移动和旋转操作。这两个操作是最基本,也是最常用的。