unity 3d 四、游戏对象与图形基础
3D游戏编程第四次作业
基本操作演练【建议做】
下载 Fantasy Skybox FREE, 构建自己的游戏场景
根据课堂指引如下:

在Asset Store中下载Fantasy Forest Environment Free Sample
、Fantasty Skybox FREE
资源包,并运用资源包建立SkyBox
和经典Forest
地形.

可以利用Fantasy Forest Environment Free Sample
自带的地形进行编辑,可以新建一个Terrian
并使用编辑工具进行绘制,包括造山,造草,添加细节等等,我们直接使用Fantasy SkyBox FREE
的天空盒,创建自己的地形进行编辑,最后结果如下:

写一个简单的总结,总结游戏对象的使用
-
Camera:
作为游戏的眼睛,通过Camera来观察游戏世界。 -
Light:
光源,可以用来照明也可用于添加阴影 -
Empty空对象
空对象多被用于当做载体,例如挂载游戏脚本、成为其他对象的父对象等。 -
Cube等3D Object:
搭建游戏世界的组成元素,通过设置其Transform等属性来变换它们的位置、形态等。 -
Terrain等:
即是组成元素,又是编辑工具,例如Terrain本身是地图,然后又附带了绘制地图的各项工具(造山、造草等)。 -
代码重用
-
创建游戏对象
- 使用
GameObject.CreatPrimitive()
函数来创建Unity自带的模型
GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
- 使用
Instantiate()
函数进行游戏物体的实例化
Instantiate(GameObject,Position,Rotition) Instantiate(brick, new Vector3(x, y, 0), Quaternion.identity);
- 动态加载预制。将预制件放在目录
Resouces\
下在脚本中通过Resources.Load
加载:
GameObject hp_bar = (GameObject)Resources.Load("Cube");
- 使用
-
获取游戏对象
- 代码中声明,并在脚本绑定的对象中绑定指定预制prefabs
- 通过
Find
函数获取游戏对象
obj = GameObject.Find("Sphere");
- 通过游戏tag获取游戏对象
GameObject.FindWithTag("Atag") //返回一个游戏对象 GameObject.FindGameObjectsWithTag("Atag") //返回多个游戏对象
-
修改游戏对象
-
gameobject.transform.position = new Vector3(2, (float)-0.5, 0);
-
-
为对象增加游戏组件
- 图形化界面
点击游戏对象->Inspector->Add Component
- 脚本添加
cube.AddComponent<Rigidbody>(); cube.GetComponent<Rigidbody>().useGravity = false; cube.GetComponent<Renderer>().material.color = Color.red;
- 图形化界面
-
克隆游戏对象
-
GameObject hp_bar = (GameObject)Resources.Load("Cube"); //动态加载预制 hp_bar = Instantiate(hp_bar); //克隆
-
编程实践
-
牧师与魔鬼 动作分离版
-
【2019开始的新要求】:设计一个裁判类,当游戏达到结束条件时,通知场景控制器游戏结束
-
详情见:牧师与魔鬼 动作分离版
-
材料与渲染联系【可选】
Standard Shader 自然场景渲染器
- 阅读官方 Standard Shader 手册 。
- 选择合适内容,如 Albedo Color and Transparency,寻找合适素材,用博客展示相关效果的呈现
步骤:新建一个Cube和Sphere->创建一个Material->更改Rendering Mode为Transparent

->更改透明度(Albedo)中的A值->将Material加到Cube上

->Cube变得透明->可以看到Cube里面的Sphere

声音
- 阅读官方 Audio 手册
- 用博客给出游戏中利用
Reverb Zones
呈现车辆穿过隧道的声效的案例
步骤:下载资源Car Engine Sound - Rotary x8 Free并导入项目

->Create Empty -> Add Component(Audio Source)->选定音源->选定Loop进行循环播放

-> Add Component(Audio Reverb Zone) -> 选定Cave作为Peverb Preset

-> 点击run按钮即可播放汽车过隧道的音乐