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

82 阅读2分钟

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

3D实体搭建

  • 3D实体
    • 3D游戏由一个个具有形状的实体组成,每个实体在空间中存在于特定位置,有特定姿态
  • 3D实体的位姿态
    • 位置Position(x, y, z)
    • 旋转Rotation(x, y, z)
    • 缩放Scale(x, y, z)
    • 先缩放,后旋转,最后平移(Unity大部分情况)
  • 3D实体的创建
    • 加载3D模型,fbx, gltf, obj
    • 通过组合参数化的几何体
  • 3D实体的绘制
    • 材质
    • 颜色
    • 纹理
  • 预制体
    • 将游戏对象保存到工程中,需要的时候创建出来
    • 预制体存储着一个游戏对象,包括游戏对象的所有组件,以及其下的所有子游戏对象

相机,光照,天空盒

  • 相机
    • clear flag
    • 背景颜色
    • Culling mask
    • 投影(正交,透视)
  • 光照
    • 类型:点光源,平行光,聚光灯,面积光
    • 颜色
    • 强度
    • 阴影类型
  • 天空盒
    • 相机的清除标志设为“天空盒”
    • 窗口-渲染-照明设置
    • 环境-天空盒材质

控制与碰撞

初始化 -> (物理 -> 输入 -> 游戏逻辑 -> 渲染 -> 停顿) -> 销毁

()内容为一帧内容

课上以飞机游戏为例,这里只记录一些重要的点

  • 添加控制逻辑
    • 刚体组件位置旋转缩放等
    • 添加自定义脚本
    • MoniBehavior
      • Start()在Update()执行前执行
      • Updata()每帧执行
      • FixedUpdata()计算物理属性并独立于帧率,每个固定帧率帧进行计算
      • LateUpdate()每次调用Update()函数后调用
      • OnGUI()渲染和处理GUI事件,可以每帧调用多次
      • OnDisable()在对象被禁用或销毁时执行
      • OnEnable()和上面相反
  • 添加其他物体(比如敌机)
  • 设置标签,图层,物理规则
    • 游戏中有不同游戏对象,需要放在不同图层中,并与其他对象发生不同的交互
  • 处理碰撞逻辑

玩法逻辑与UI

  • 实例化预置体
  • UI实体
  • 场景周期控制

主要需要设计游戏玩法,并添加相应的脚本逻辑。小飞机中空格控制射击,子弹大小及碰撞,分数计算与展示等。