这是我参与「第五届青训营 」伴学笔记创作活动的第 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实体
- 场景周期控制
主要需要设计游戏玩法,并添加相应的脚本逻辑。小飞机中空格控制射击,子弹大小及碰撞,分数计算与展示等。