Unity3D学习笔记(二)创建地形和漫游
转载自 http://huangxuyang.cn/unity3d/learning-unity3d-note-2
上一章粗略介绍了一下Unity游戏引擎的概念定义和界面功能,这次就来实践一下。我们的目标是没有蛀牙(误),目标是创建一个地形,上面有山脉和盆地,然后再放置一个人物,以第一人称的视角来漫游、观察我们所创建的世界。
在开始设计游戏之前我们需要先重新建立一个我们自己的Unity工程。点击主菜单的"文件→新建工程(File->New Project…)",就可以看到新建工程向导对话框了。
我把工程建建立在E:\Frederick\Unity3D\UnityFundStudy1,注意目前Unity对中文的支持不是很好,因此在 Unity中尽量不要使用中文,防止出现各种各样莫名其妙的异常。点击确认创建,Unity会重启并自动打开我们创建的工程。这时在设计视图面板就可以看 到一个“什么都没有”的宇宙。而在层次面板中则可以看到一个“Main Camera”,顾名思义,就是主摄像机,暂时可以先不理它。
作为这个世界的神,我们需要在这个混沌的虚空里创建一个大陆,以承载世间万物。点击主菜单→地形(Terrain)→创建地形 (Create Terrain)。然后在设计视图里就出现了一个不是怎么好看的白色平面,与此同时在层次面板也会出现Terrain,它表示我们刚刚创建的地形。在工程 面板中则会有一个“New Terrain”,代表地形素材。接着可以选择工具栏中的拖动工具,在设计视图中进行以下操作,调整到一个自己看着舒服的视角:
- 按住鼠标右键并拖动:旋转视角;
- 按住鼠标左键并拖动:平移视角;
- 滚动鼠标滚轮:拉近/拉远视角;
这地面白茫茫一片看着一点生命力都没有,回想一下在其他游戏里,都是会有一些草原、沙漠、戈壁之类的吧。所以接下来给我们的大陆加上点“料”,贴上 地形纹理。在此之前需要先导入一些贴图素材,还记得创建工程时候的那些素材包吗?现在我们就导入一个Unity自带的地形素材包。点击主菜单(或右键点工 程视图)“Assets→Import Package→Terrain Assets”,会弹出一个需要导入素材的筛选列表,这里直接点右下角的导入”Import”导入所有素材。导入的素材则会出现在工程视图面板中的 “Standard Assets”文件夹中。
准备好素材后,选中我们的大陆,然后在监视面板中找到地形工具栏,并点击第四个“绘制地形纹理”按钮。继续点击“Edit Textures…→Add Textures…”添加新的地形纹理。在弹出的对话框中找到那个选择纹理的小圆圈按钮,选择“Grass Hill”。不要惊讶为啥地面变成一坨绿色了,那是因为镜头太远了看不清细节,调整一下视角即可。接着如法炮制,把“Grass&Rock”也添 加进来,这样一来我们就有两种地形纹理了。有了地形纹理之后需要做的工作就是使用画刷工具将纹理“绘制”在地形上。选中第二张纹理,然后把鼠标移动到设计 视图中,按住鼠标左键随意“涂抹”(用过Photoshop的画刷工具应该可以轻松领会),涂错了也不同担心,用另外一张纹理覆盖涂抹上去即可。
光有地形纹理还不够,这一马平川依然不能让人感觉心潮澎湃呀,所以还需要给这个地形做个“外科整容手术”,该凸的凸,该凹的凹,跌宕起伏才有韵味 嘛:)上文使用的是第四个按钮“地形画刷”,现在要祭出“地形隆起/凹陷”这把手术刀了。点击第一个按钮切换,发现和之前的工具配置项类似,调整画刷形 状、大小、透明度后,在设计视图再涂抹一下,地面瞬间就隆起啦!如果想取消隆起,可以按住Shift再涂抹,地面就会凹陷下去。顺便再说明一下第二个和第 三个工具,前者是“直接设置地面高度”,后者是“平滑地面高度”,参数都是大同小异。在对前面那块地形稍作调整后,我整了些山脉上去:
唔……没有艺术细胞,将就着看吧,哈哈。至于山脉上面应该有的岩壁纹理,还有花草树木之类的留到下章再讲。是否已经迫不及待想要看看这个世界呢?如 果是自己为游戏做编程,那还需要建立一个角色,然后让它接收用户输入再作出响应,比如走动、旋转视角等等,相当麻烦。Unity为我们准备了大量的范例和 素材包,其中不但包括各种模型、图片,还有常用的脚本等等。例如接下来要使用的角色控制器,完全可以不写一行代码实现上述功能(事实上在3DBuzz的基 础教程中,从头到尾都没有涉及脚本,所以程序新手完全不用担心。)
点击主菜单(或右键点工程视图)“Assets→Import Package→Character Controller”,导入角色控制器素材包。在工程面板视图中,在“Standard Assets→Character Controllers”目录下,可以找到“3rd Person Controller”和“First Person Controller”。顾名思义,前者是第三人称视角控制器(类似战神、刺客信条视角),后者是第一人称视角控制器(类似反恐精英、使命召唤视角)。简 单起见我只用到后者,将它直接拖入场景设计视图,随意摆放到一个位置,一个角色就创立完成啦!虽然其貌不扬,长得还有点邪恶XD,但它可以像我们常玩的 FPS游戏一样,用WSAD控制移动,空格跳跃,鼠标控制镜头方向,真是太给力了。如果设计视图视角拉得太远,则会导致几乎看不到它,此时可以双击层次视 图面板上的First Person Controller来让设计视图的镜头对着它,这个操作适用于聚焦任何游戏对象。
完成创建角色控制器后,就可以点工具栏上的播放键测试运行游戏了。呃,天色好暗,环顾四周只能看到山峰的轮廓……这是因为游戏中还没有光,所以几乎 什么都看不见。既然没有光,那就创建一个。先再次点击播放键退出游戏测试,然后点击主菜单“(新建游戏对象)GameObject→(创建其他游 戏...)Create Other→(线性光)Directional Light”,创建一个线性光对象。
神说:要有光。便有了光。
嘿嘿,瞬间整个世界都敞亮了。所谓线性光,可以理解为一个从无限远的地方向某个方向发射一束无限宽的光线,有点像太阳。由于是无限远的,所以不存在 物体在线性光的背面,即使在设计视图中把线性光对象拖到地面以下,依旧能够照亮地面。同时当光线被山脉遮挡时,就会在地面上留下阴影。如果对光线的方向不 满意的话,可以先选中线性光,然后点击工具栏中的旋转工具对其进行旋转。旋转时会出现一个球形,拖动任意一条线即会让物体沿着其中心轴旋转(该操作适用于 任何游戏物体,具体动手尝试一下即可)。
终于可以在亮堂堂的世界里畅游啦,还是蛮有成就感的嘿。
最后别忘了把游戏场景保存一下,方便下次再次编辑。点击主菜单中的“File(文件)→Save Scene(保存场景)”,由于之前没有保存过场景,所以Unity会弹出一个保存框让用户选择保存位置。为了方便管理,我在Assets目录下新建了一 个Scenes目录,然后保存为 ElwynnForest。当下次打开Unity时,Unity会自动打开最近一次编辑的项目和场景,此时保存场景就不需要再输入文件名了。
关于地形的创建和漫游的笔记就到这里,下一章我们给这片荒野加上一些花草树木,展现一下大自然的独特魅力:)
备注:在加入角色控制器后,运行会发现视线一直在往下掉,你会看到前面加入的树在往上上升,这是因为重力的作用,必须将First Person Controller的一项名为 Gravity的属性设置为0(位于 Movement栏目下,见下图),默认是20,这样就不会发生往下掉的情况了。