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

78 阅读2分钟

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

3D实体搭建

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

3D实体的位姿态

  1. 旋转Position(x,y,z):是一个三维向量坐标
  2. 旋转Rotation(x,y,z):是一个三维向量坐标
  3. 缩放Scale(x,y,z):是一个三维向量坐标

3D实体的创建

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

3D实体的绘制

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

预制体

将游戏对象保存在工程中,在需要的时候创建出来,这就是预制体(prefab)

预制体存储着一个游戏对象,包括游戏对象的所有组件以及其下的所有子游戏对象

相机,光照,天空盒

相机

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

光照

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

天空盒

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

控制与碰撞

  • 初始化
  • 物理输入
  • 游戏逻辑
  • 渲染
  • 停顿
  • 销毁

设置标签图层和物理规则

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

主角飞船:会与敌机,敌机炮弹,升级道具碰撞,但不会与主角飞船的炮弹碰撞

主角飞船的炮弹:与敌机,敌机的炮弹碰撞

敌机:与主角飞船和主角飞船的炮弹碰撞

敌机的炮弹:只与主角飞船碰撞

升级道具:只与主角飞船碰撞

玩法逻辑与UI

  • 主角飞船添加射击功能
  • 按下空格后实例化新炮弹
  • 为子弹添加碰撞事件
  • 屏幕右上角显示计分板
  • 每次消灭敌机为玩家增加50分
  • 重新开始游戏‘

知识点总结

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