HW4 游戏对象与图形基础
基本操作演练
-
1.1 下载Fantasy Skybox Free,构建自己的游戏场景
- 到Asset Store里面下载 Fantasy Skybox Free
-
import packages之后,可以看到Asset目录下多了三个文件夹
-
开始构建自己的游戏场景
创建天空
天空是一个球状贴图,通常用 6 面贴图表示
-
菜单 Assets -> create -> Material
-
Inspector ->shader -> skybox -> 6 sided
-
按前后、上下、左右拖入 6 个图片
-
制作完成,拖入项目 Material 目录
再创建一个Terrain(地形)
Unity 提供了简单的地形设计工具
菜单 -> Game object -> 3d object -> Terrain
-
设置地图大小与位置
-
使用造山工具(点击地图网格,上升地形;按 shift 键,下降地形)
-
使用高度工具 ->画出一些山中路径
-
使用平缓工具 -> 画出与平地的连接
-
选择合适材料铺地、种草、种树
但是呢,Unity一开始是没有自带的草和树的资源,所以我们需要从Fantasy Skybox Free中添加草和树的资源
点击Terrain -> Inspector -> paint tree -> Edit Trees -> Add Tree
然后将Fantasy Skybox FREE/Demo/Prefabs 文件夹中的树资源拖到所弹出窗口中
草的资源在Fantasy Skybox FREE/Demo/Textures文件夹内,添加方法与树差不多
最后我做的场景(很丑很粗糙,所以使用的时候还是用已经做好的吧……)
最后,把天空盒安置在摄像头上
点击Component–>Rendering–>Skybox,将我们做好的Skybox拖到MainCamera中
-
-
1.2 写一个简单的总结,总结游戏对象的使用
您在游戏中看到的每个对象都是一个GameObject。 这是Unity的基本物体。 你可以在层次结构窗口中找到所有GameObject。当你在unity中创建一个新项目时,在默认情况下,层级窗口中会有两个游戏对象。
- MainCamera:控制游戏窗口的视图
- Directional Light:提供任何特定方向的光
单独的GameObject只是一个空容器,但当你向GameObject添加组件时,它会向它们添加功能。
默认情况下,游戏对象可能会附加一些组件(Transform/Mesh Collider等)。你可以在检查窗口中看到GameObject(游戏物体)的所有组件。如果任何组件被禁用,它将被附加到GameObject(游戏物体),但它的功能不会在场景中呈现。
原始游戏对象可以直接在unity中创建,你可以将这些GameObjects用于测试目的或任何其他需求。你也可以通过预制存储GameObject和它的所有组件和属性。一旦预制被创建,游戏对象可以在场景和项目中多次重用。
有时候我们也会用到Empty GameObject,它只有Transform组件,它一般用于挂载Controller脚本,或者用于创建多个GameObjects的父类
编程实践
-
牧师与魔鬼 动作分离版
- 【2019新要求】:设计一个裁判类,当游戏达到结束条件时,通知场景控制器游戏结束
材料与渲染联系
-
从 Unity 5 开始,使用新的 Standard Shader 作为自然场景的渲染
-
阅读官方 Standard Shader 手册
Unity标准着色器是一个内置的着色器,具有全面的功能。它可以用来渲染“真实世界”的物体,如石头、木头、玻璃、塑料和金属,并支持广泛的着色器类型和组合。
标准的着色器还包括一个先进的照明模型称为物理基础的阴影。基于物理的遮阳(PBS)以一种模拟现实的方式模拟了材料和光之间的相互作用。
Unity 中的着色器是通过材质 (Material) 使用的。材质本质上将着色器代码与纹理之类的参数结合起来。
-
选择合适内容,如 Albedo Color and Transparency,寻找合适素材,用博客展示相关效果的呈现
反照率颜色和透明度(Albedo Color and Transparency)具有默认参数且未分配任何值或纹理的标准明暗器材质。 反照率颜色参数突出显示。 Albedo参数控制曲面的基础颜色。
Standard着色器的四种渲染模式:
- Opaque模式:这种模式代表该着色器不支持透明通道, 物体是完全不透明的
- Cutout模式:这种模式下支持透明通道,要么就透明,要么就完全不透明,图片内容是否透明,由Albedo的Alpha值和Alpha Cutoff决定的。适合制作叶子,草灯,带有透明通道的图片但不希望出半透明效果的材质;
- Fade模式: 褪色模式,改模式下可以操作Albedo的Color的Alpha值来操作材质的透明度,比较适合做物体渐渐淡出的动画效果, 当Alpha值降低了以后,表面的高光和反色也会变淡
- Transparent模式: 这种模式下的材质通过Albedo的Color的Alpha值来操作材质的透明度,当物体为半透明的时候,表面的高光和反色不会变淡
A range of white to black albedo values:
例子我们使用之前太阳系的金星Material
-
初始 Albedo - > #FFFFFF
-
Albedo - > #7F7F7F
-
Albedo - > #000000
修改Transparency
反照率颜色的Alpha值控制材质的透明度。仅在渲染时才有效材质的模式设置为透明模式之一,而不是不透明模式。
所以我们需要在Inspector中将Mterials的rendering mode修改transparent
-
初始 Alpha - > 255
-
Alpha -> 127
-
Alpha -> 0
-
-
Unity 5 声音
-
阅读官方 Audio 手册
Unity的音频功能包括完整的三维空间声音,实时混合和掌握,层次混频器,快照,预定义的效果和更多。
如果没有某种音频,游戏将是不完整的,无论是背景音乐还是音效。Unity的音频系统灵活而强大。它可以导入大多数标准的音频文件格式,并具有复杂的功能,可以在3D空间中播放声音,还可以应用回音和过滤等效果。Unity还可以记录来自用户机器上任何可用麦克风的音频,以便在游戏过程中使用,或用于存储和传输。Unity可以导入AIFF, WAV, MP3和Ogg格式的音频文件,就像其他资产一样,只需把文件拖到项目面板。
-
用博客给出游戏中利用 Reverb Zones 呈现车辆穿过隧道的声效的 案例
Unity的音频功能包括完整的三维空间声音,实时混合和掌握,层次混频器,快照,预定义的效果和更多。
如果没有某种音频,游戏将是不完整的,无论是背景音乐还是音效。Unity的音频系统灵活而强大。它可以导入大多数标准的音频文件格式,并具有复杂的功能,可以在3D空间中播放声音,还可以应用回音和过滤等效果。Unity还可以记录来自用户机器上任何可用麦克风的音频,以便在游戏过程中使用,或用于存储和传输。Unity可以导入AIFF, WAV, MP3和Ogg格式的音频文件,就像其他资产一样,只需把文件拖到项目面板。
-
用博客给出游戏中利用 Reverb Zones 呈现车辆穿过隧道的声效的案例
混响区域 (reverb zone)
混响区域 (reverb zone) 采用音频片段 (audio clip) ,并根据音频侦听器 (audio listener) 在混响区域 (reverb zone) 中所处的位置使其变形。若希望从没有环境效果的位置逐渐变为有环境效果的位置(例如在进入洞穴时)使用混响区域 (reverb zone)。
要向变换添加混响区域 (reverb zone),只需在检视器 (inspector) 中选择对象,然后选择 组件 (component) -> 音频 (audio) -> 音频混响区域 (audio reverb zone)。
也可以直接创建 Reverb Zone 对象
然后我们创建一个 Object (模拟汽车),添加Audio Source (模拟汽车声音)(图中我还没有挂载AudioClip),再添加 移动闯过AudioReverbZone的脚本 (模拟汽车移动),这样我们就能呈现车辆穿过隧道的声效
-