• unity 3d 四、游戏对象与图形基础


    3D游戏编程第四次作业

    基本操作演练【建议做】

    下载 Fantasy Skybox FREE, 构建自己的游戏场景

    根据课堂指引如下:

    在Asset Store中下载Fantasy Forest Environment Free SampleFantasty 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 自然场景渲染器

    步骤:新建一个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按钮即可播放汽车过隧道的音乐

  • 相关阅读:
    前端面试题
    【429】关于ADT的访问权限
    【428】Dijkstra 算法
    【427】Graph 实现 以及 DFS & BFS
    【426】C 传递数组给函数
    【425】堆排序方法(二叉堆)优先队列(PQ)
    Hadoop案例(九)流量汇总案例
    Hadoop案例(八)辅助排序和二次排序案例(GroupingComparator)
    Hadoop案例(七)MapReduce中多表合并
    Hadoop案例(六)小文件处理(自定义InputFormat)
  • 原文地址:https://www.cnblogs.com/lwfing/p/13834764.html
Copyright © 2020-2023  润新知