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

112 阅读2分钟

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

本篇笔记是对今天青训营的录播课3D游戏实战开发课程的归纳总结及个人感悟。

一,3D实体搭建

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

3D实体的位姿态(Transform):

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

3D实体的创建:

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

3D实体的绘制:

  • 材质
  • 颜色
  • 纹理

预制体:

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

二,相机、光照、天空盒

相机:

  • clear flag
  • 背景颜色
  • culling mask
  • 投影(投影透视(perspective)与正交透视(orthographic))

光照:

  • 类型:点光源、平行光、聚光灯、面积光
  • 颜色
  • 强度
  • 阴影类型

天空盒:

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

三,控制与碰撞

为主角飞船添加控制逻辑:

1,添加刚体组件

2,添加自定义脚本

添加敌机:

  • 为每架敌机预制体添加一个刚体
  • 建立敌机的脚本enemey.cs
  • 为每架敌机预制体均添加脚本enemy.cs

设置标签、图层和物理规则

游戏中存在不同类型的游戏对象,他们需要放置在不同的图层中,并与其他游戏对象不同的交互