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

132 阅读2分钟

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

3D实体搭建

3D实体

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

3D实体的创建

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

3D实体的绘制

主要通过材质、颜色、纹理进行绘制

预制体

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

相机、光照、天空盒

相机

  • Clear Flag
  • 背景颜色
  • Cuulling Mask
  • 投影(透视、正交)

image.png

光照

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

天空盒

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

控制与碰撞

1帧的过程 image.png

为主角飞船添加控制逻辑

  1. 添加刚体组件
  2. 添加自定义脚本

添加敌机

  1. 为每架敌机预制体添加一个刚体
  2. 建立低级的脚本Enemey.cs
  3. 为每架敌机预制体均添加脚本Enemy.cs

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

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

  • 主角飞船
  • 主角飞船的炮弹
  • 敌机
  • 敌机的炮弹
  • 升级道具

玩法逻辑与UI

主角飞船增加设计功能

  • 新建一个新的预制体
  • 创建一个新材料,并应用到预制体上面
  • 为预制体对象添加一个新的刚体组件
  • 给预制体设置标签和图层

屏幕右上角显示计分板

每次消灭敌机为玩家增加50分

重新开始游戏

  • 主角飞船被消灭2秒之后重新开始游戏

知识点总结

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