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

49 阅读3分钟

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


课程介绍

  1. 3D 游戏中的实体模型、材质与位姿
  2. 相机、光照、天空盒
  3. 游戏控制、刚体属性与物理碰撞
  4. 玩法逻辑与游戏UI

3D游戏引擎初步理解

  • 下载并运行 Unity 软件
  • 熟悉 Unity 界面
  • Scene(场景)面板
  • Game(游戏)面板
  • Hierarchy(层级)面板
  • Project(项目)面板
  • Inspector (检视器)面板
  • Console(控制台)面板
  • 理解 Unity 中的 GameObject (实体)及其挂载的 Component (组件)
  • Camera(相机)实体
  • Light(光照)实体
  • Transform(变换)组件:位置、旋转和缩放
  • Mesh(网格)组件与 Material (材质)组件
  • RigidBody(刚体)组件:物理模拟
  • Collision(碰撞器)组件:碰撞检测
  • Input(游戏输入)与 InputManager(输入管理器)
  • Tag(标签)、Layer(图层)与 Physics(物理规则)
  • Prefab(预制体)与 Instantiate(实例化)
  • 在 GameObject 上挂载 Script(脚本)
  • GUI(图形用户界面)和游戏管理
  • 下载 Unity 之外的另一款 3D 游戏引擎,在其中寻找以上概念在另一款 3D 游戏引擎中的平行概念。以下是建议的另一款 3D 游戏引擎:
  • UE(Unreal Engine 虚幻引擎,UE4 或 UE5)
  • Roblox(罗布乐思)

3D实体搭建

3D实体

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

1.png
3D实体的位姿态(Transform)
  • 位置Position(x,y,z),是一个三维向量坐标
  • 旋转Rotation(x,y,z),是一个三维向量坐标
  • 缩放Scale(x,y,z),是一个三维向量坐标 在Unity中,绝大部分情况下,是先缩放,后旋转,最后平移
3D实体的创建
  • 通过加载3D模型创建,如fbx,gltf,obj
  • 通过组合参数化的基本几何体创建
2.png
3D实体的绘制
  1. 材质
  2. 颜色
  3. 纹理
3.png
敌机模型制作
4.png
预制体
  • 将游戏对象保存在工程中,在需要的时候创建出来,这就是预制体(prefab)
  • 预制体存储着一个游戏对象,包括游戏对象的所有组件以及其下的所有子游戏对象
5.png

相机,光照,天空盒

相机
  1. Clear Flag
  2. 背景颜色
  3. Culling Mask
  4. 投影(透视,正交)
6.png
透视投影(Perspective)与正交投影(Orthographic)
7.png
光照
  1. 类型:点光源、平行光、聚光灯、面积光
  2. 颜色
  3. 强度
  4. 阴影类型
8.png
天空盒
  • 相机的清除标志设为“天空盒”
  • 窗口-渲染-照明设置
  • 环境-天空盒材质
9.png

控制与碰撞

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

玩法逻辑与UI

知识点总结
  • 学习在Unity中创建实体,给实体设置位姿、材质、刚体、脚本
  • 学会配置相机。光、天空盒
  • 理解实时游戏update的时序机制
  • 通过Input.GetAxis()与InputManager监听玩家输入
  • 用Instantiate()动态生成游戏实体实例
  • 从Camera.main获得相机参数,设置场景中的物体在画面中的位置
  • 利用标签、图层管理器区分实体种类并设置物理规则
  • 通过Collider组件OnTrigger函数添加碰撞事件
  • 通过图形用户界面(GUI)管理游戏界面

引用参考

字节青训营第十七节课3D游戏实战开发