3D游戏实战开发(1) | 青训营笔记

106 阅读2分钟

3D游戏实战开发(1) | 青训营笔记

这是我参与「第五届青训营 」笔记创作活动的第9天

一、3D实体搭建

  • 3D游戏是由一个个具有形状的实体组成的。每个实体在空间中存在于特定的位置,有特定 的姿态(旋转角度)。

(1) 3D实体的位姿态

  1. 位置 Position (x, y, z),是一个三维向量坐标 2. 旋转 Rotation (x, y, z),是一个三维向量坐标
  2. 旋转 Rotation (x, y, z),是一个三维向量坐标
  3. 缩放 Scale (x, y, z),是一个三维向量坐标 在Unity中,绝大部分情况下,是先缩放,后旋转,最后平移。

(2) 3D 实体的创建

  1. 通过加载3D模型创建,如 fbx、gltf、obj。
  2. 通过组合参数化的基本几何体创建。

(3) 3D 实体的绘制

  1. 材质。
  2. 颜色。
  3. 纹理。

(4) 敌机模型制作

image.png

(5) 预制体

  • 将游戏对象保存在工程中, 在需要的时候创建出来, 这就是预制体(prefab)。
  • 预制体存储着一个游戏对象, 包括游戏对象的所有组件以及其下的所有子游戏对象。

二、相机,光照,天空盒

(1) 相机

  1. Clear Flag。
  2. 背景颜色。
  3. Culling Mask。
  4. 投影(透视、正交)

(2) 透视投影(Perspective)与正交投影 (Orthographic)

image.png

(3) 光照

  1. 类型:点光源、平行光、聚光灯、面积光。
  2. 颜色。
  3. 强度。
  4. 阴影类型。

(4) 天空盒

  1. 相机的清除标志设为“天空盒” 。
  2. 窗口-渲染-照明设置。
  3. 环境-天空盒材质。

三、控制与碰撞

(1) 为主角飞船添加控制逻辑

  1. 添加刚体组件。
  • Add Component > Physics > Rigidbody。
  • Use Gravity 设置为 false,忽略重力的影响。
  • isKinematic 设置为 true,飞船通过脚本而非力影响运动属性。
  • 设置 Constraints ,冻结Z轴位移以及X、Y、Z轴旋转。
  1. 添加自定义脚本。
  • Add Component > New Script

(2) MonoBehaviour

  • Start() 在首次调用任何 Update 方法之前在帧上调用 Start。
  • Update() 每帧调用 Update。
  • FixedUpdate() 用于物理计算且独立于帧率。具有物理系统的频率;每个固 定帧率帧调用该函数。
  • LateUpdate() LateUpdate 在每一次调用 Update 函数后调用。
  • OnGUI() 系统调用 OnGUI 来渲染和处理 GUI 事件。OnGUI 实现可 以每帧调用多次(每个事件调用一次)。
  • OnDisable() 该函数在对象被禁用时调用。对象销毁时也会调用该函数。
  • OnEnable() 该函数在对象变为启用和激活状态时调用。