《Unity 3.x游戏开发实例》一1.9 技术的神奇之处

简介:

本节书摘来异步社区《Unity 3.x游戏开发实例》一书中的第1章,第1.9节,作者: 【加】Ryan Henson Creighton 译者: 师蓉 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.9 技术的神奇之处

Unity提供了可以在软件中对关卡建模的地形工具。它提供了一个现成的第一人称控制器预制(First Person Controller Prefab)对象,让你的世界自动接受WASD键盘控制,这样可以探明地形,或者也可以用你自己的角色取代AngryBots英雄,创建一个第三人称游戏。Unity会自动处理渲染(绘制)、碰撞、物理和音效。它是一个神奇的工具!

坚持开放世界

如果你想学习如何在Unity中塑造你自己的地形,并添加3D模型、声音和交互来制作一款简单实用的3D开放世界游戏,可以看看Will Goldstone编写的《Unity 3.x Game Development Essentials》(Packt出版社出版)。

在AngryBots演示中看到的大多数内容都不能直接用Unity制作。大部分素材都是用其他软件制作的;Unity是用来将所有这些内容组合起来,并使它们可交互的程序。演示包括特殊的模型,如从3D Studio Max、Maya或Blender这些3D软件包中导入的气闸。某些元素,如机器人敌人,是有脚本连接的。脚本是游戏世界中物体的行为指南。我们将在本书中学习如何导入3D模型,以及如何编写控制它们的脚本。

我们先来快速浏览一下Unity的界面和几个需要注意的地方。

1.10 Scene窗口

Scene(场景)窗口是定位游戏对象并移动它们的地方(见图1.10)。这个窗口有多种可以改变其细节层次的控件。使用这些控件来切换照明,显示带有纹理、线框或纹理线框的窗口内容。可以使用右上角的彩色小工具(Gizmo)约束X、Y和Z轴的视角,以便观察场景的顶部和侧面。点击Gizmo中间的白色方形返回透视视图。该窗口还设有搜索栏。试着单击绿色的Y锥形,从上面观察AngryBots演示,然后在搜索栏中输入rock。所有名称中含有“rock”的对象都会亮起来,而场景中的其他对象则会变灰。单击小的x按钮清除搜索栏。


1_10

1.10.1 Game窗口

Game(游戏)窗口显示的是玩家们看到的内容,见图1.11。当点击Play按钮测试游戏时(就像刚才在AngryBots演示中所做的那样),制作的成果就会显示在该窗口中。切换到Maximize on Play按钮,可以用全屏模式测试游戏。


1_11

1.10.2 Hierarchy面板

Hierarchy(层次结构)面板列出了场景中的所有游戏对象,见图1.12。游戏对象(摄像机、光源、模型和预制(prefab))组成了游戏。它们可以是“有形的”,如AngryBots演示中的气闸门和金属罐。它们也可以是“无形的”,只有游戏开发者才能操作,如摄像机、光源和碰撞器,这些是特殊的不可见形状,告知游戏引擎两个游戏对象相互接触的时间。


1_12

AngryBots演示的Hierarchy面板包括金属罐、桌子、气闸和电脑终端等的游戏对象。它还列出了玩家——一个非常复杂的游戏对象,用于控制英雄的移动以及与环境的碰撞。有一个追踪玩家角色的摄像机。该摄像机是我们在游戏世界的眼睛。该演示列出了称为Environment(sounds)的集合——一系列游戏对象,用来决定玩家行走在关卡的不同位置时听到的声音(如屋外的暴雨,以及他在室内移动时机器的嗡嗡声)。所以,游戏对象可能包括“有形的”对象,如金属罐和气闸,以及幕后无形的东西,如光源、摄像机和动作(脚本)。

单击Hierarchy面板中的一个游戏对象,然后将鼠标悬停在Scene窗口。按下键盘上的F键,Scene窗口就会自动平移并缩放到这个对象。或选择Edit | Frame Selected,这比使用键盘快捷键更可靠(我常常把F当作表示帮助我记住这个快捷方式功能的焦点)。

1.Project面板
Project(项目)面板列出了用来在项目中创建游戏对象的所有元素,如图1.13所示。例如,在Objects/Enemies文件夹中查找mech_bot。AngryBots演示的EnemyMech游戏对象是由一系列网格组成的,它们表示网格的形状、描述其“皮肤”或着色的材料,以及描述其运动的动画。所有这些内容都列在Project面板中。


1_13

Project面板显示的是计算机的操作系统中Assets特殊文件夹的内容。当创建一个新项目时,Unity会自动创建Assets文件夹。如果把一个兼容的文件,如一个3D模型、一个音效或一张图片拖入Project面板中,Unity会将它复制到隐藏的Assets文件夹中,并把它显示在Project面板中。

不要乱动Assets文件夹

Unity存储的是该文件夹的元数据,通过操作系统移动或删除其内容,就可能会破坏你的项目。如果你需要进行更改,一定要确保它们在Unity的Project面板中。

2.Inspector面板
Inspector是上下文相关的面板,见图1.14,这意味着,它的变化取决于你在Unity中其他位置选择的对象。你可以在这里调整Hierarchy面板中所列游戏对象的位置、旋转和比例。Inspector面板还可以显示控件,以便配置可以向游戏对象中添加功能的组件。在Unity的三个主面板(Hierarchy、Project和Inspector)中,Inspector是最费时间的,因为这是调整组成游戏项目中元素每个环节的地方。


1_14

上面所示的Inspector截图显示了AngryBots演示中属于Player游戏对象的组件:脚本(包括Free Movement Motor和Player Move Controller)、刚体组件、胶囊碰撞器等。要在电脑中查看这些内容,需要点击打开Hierarchy面板中的Player游戏对象。

3.注意
使用Inspector面板快速改变角色的方向。让英雄在演示开始时是倒立的(这一定可以让那些坏人更愤怒)。

我们可以使用Inspector面板来改变PLayer对象的方向。按照下面的步骤执行:

(1)在Hierarchy面板中,选择Player游戏对象(见图1.15)。


1_15

(2)点击Rotate按钮,该按钮看起来是两个首尾相对的箭头(见图1.16)。


1_16

Player游戏对象底部会出现一个球体。红色的x轴旋转手柄环绕着Player对象的身体。拖曳它旋转Player对象模型,好像它正站在一个非常危险的独木舟上。蓝色的z轴旋转手柄旋转该Player对象,好像用一个无形的别针贯穿他的脚踝。如果我们拖曳该手柄,该Player对象就会不是面朝地,就是背朝地进行旋转,就好像他得了宇宙病。绿色的y轴旋转手柄像呼啦圈一样环绕着该Player对象。

随意拖动该手柄会使Player对象面向不同的方向旋转。Player游戏对象可能会变得相当恐怖;为了将旋转控件隔离开,在Scene窗口的搜索栏中输入player来排除其他所有游戏对象,见图1.17(需要记住的是,当鼠标光标位于Scene视图时,按下F键可以使选取的游戏对象在眼前显现出来)。


1_17

(3)拖动红色的x轴可以让Player对象倒立起来,但是更好的方法是在Inspector面板中改变x轴的rotation值。如果Inspector面板中Transform旁边的灰箭头尚未打开(见图1.18),就展开它,然后将Rotation下面的x值改成180。PLayer对象就会倒立起来了。


1_18


(4)当点击Play按钮测试游戏时,演示程序中的Player对象就会以电动摇摆舞风格来移动。这些机器人被吓坏了,以“错误!不能计算!”的方式来保持他们机械的步伐。

4.Layers和Layout下拉菜单
可以在Inspector面板上方看到Layers(层)和Layout(布局)下拉菜单,见图1.19。和Photoshop或Flash类似,可以将游戏对象分层。在Layout下拉菜单中存储了一些常用的布局(我设置的是“2 by 3”配置)。你也可以保存并加载自己的自定义布局。


1_19

5.播放控件
这三个按钮可以帮助你测试游戏,并控制播放。正如你所看到的,“播放”(Play)按钮用于开始和停止游戏。“暂停”(Pause)按钮按预期工作——它用于暂停游戏,这样你就可以立刻在运行中进行更改。第三个按钮是单步调试(Step-Through)控件;使用它一帧一帧地推进游戏,这样就可以更严格地控制发生了什么。


1_20

测试时所做的修改无法保存

Unity更令人惊讶的一个功能是:当测试游戏时,也可以随时修改游戏对象和变量。但重要的是要知道,在测试过程中所做的修改并不会“保存”。一旦停止测试游戏,在测试过程中所做的修改就会恢复到点击“播放”按钮之前的状态。令人沮丧的是:对你的游戏做了一大堆修改后才发现一直处于“播放”状态,你的修改将丢失。避免这个问题的一种方法是切换到Game(游戏)窗口的Maximize on Play按钮,这样你才能更好地意识到你是否正在进行测试。

6.场景控件
在场景的左上角,有4个帮助你在场景中移动的控件,可以使用它来定位游戏对象。这些控件分别对应键盘上的Q、W、E和R键。从左到右依次是以下4个工具。

手形工具(Q):用它在场景中单击并拖动。按住键盘上的Alt键来旋转视图。按住Ctrl键(Windows)或Command/control键(Apple)来放大和缩小。鼠标滚轮也可以缩放场景。按住Shift键,可以加快平移、缩放、旋转的速度。这是让玩家在游戏世界中穿行的一种方法。它并不会影响玩家看到游戏的方式。要修改Game视图,需要使用移动或旋转工具来修改摄像头定位。
移动工具(W):该工具用于在场景中移动游戏对象。可以通过x、y或z轴手柄拖动这些对象,也可以通过中间的正方形做自由运动。按住Ctrl键或Command键(Apple)可以捕捉运动来设置网格增量。同时按住Shift键会将对象与“地面”对齐。
旋转工具(E):通过一个简单的球形小工具,用它旋转对象。红线、绿线和蓝线分别对应x、y、z轴。
缩放工具(R):这个工具的工作原理和移动、旋转工具大致相同。使用它来放大或缩小游戏对象。拖动x、y或z轴会使对象非均匀(挤压和拉伸)缩放,而拖动中间的灰色立方体会均匀缩放它。

相关文章
|
3月前
|
vr&ar 开发工具 图形学
Unity引擎:收费模式和服务升级,为游戏开发带来更多可能性
Unity引擎:收费模式和服务升级,为游戏开发带来更多可能性
|
9月前
|
图形学
Unity构造器注入+配置文件小实例
Unity构造器注入+配置文件小实例
|
4月前
|
人工智能 图形学
Unity——游戏AI实例
Unity——游戏AI实例
|
6月前
|
vr&ar 开发工具 图形学
Unity引擎:收费模式和服务升级,为游戏开发带来更多可能性
Unity引擎:收费模式和服务升级,为游戏开发带来更多可能性
|
8月前
|
图形学
Unity基础-Vector3.Lerp的使用给一个简单的实例
Unity基础-Vector3.Lerp的使用给一个简单的实例
|
8月前
|
编解码 缓存 图形学
unity中的渲染优化技术
unity中的渲染优化技术
|
10月前
|
存储 图形学 Android开发
【游戏开发】使用unity创建2D游戏
Unity是一种非常强大的游戏引擎,可以帮助你创建各种类型的游戏,包括2D游戏。在本文中,我们将教你如何使用Unity创建2D游戏。首先,你需要确保你已经下载并安装了最新版本的Unity。如果你还没有安装Unity,可以从官方网站下载免费的Unity Hub来管理你的Unity版本。
388 0
|
10月前
|
图形学
【游戏开发】unity透明特效的制作方法
Unity是一种强大的游戏开发引擎,它支持许多不同的特效和图形效果。其中一种常用的特效是透明特效,它可以使游戏中的材质变得半透明或完全透明。在本文中,我们将介绍如何使用Unity创建透明特效。
517 0
|
10月前
|
JavaScript 前端开发 vr&ar
【游戏开发】unity入门教程
Unity是一款非常受欢迎的游戏引擎,它可以用于开发2D和3D游戏以及虚拟现实和增强现实应用程序。如果你是一个刚开始接触Unity的开发者,这篇教程将为你提供一些有用的指导。
221 0
|
存储 C# 开发工具
C#编程的构成要素(结合unity做实例分析)
C#编程的构成要素(结合unity做实例分析)
C#编程的构成要素(结合unity做实例分析)