这是我参与「第五届青训营」笔记创作活动的第16天。
3D实体搭建
3D实体是由一个个有形状的实体组成的,每个实体在空间中存在于特定的位置,有特定的姿态(旋转角度)
3D实体的位姿态
- 旋转Position(x,y,z):是一个三维向量坐标
- 旋转Rotation(x,y,z):是一个三维向量坐标
- 缩放Scale(x,y,z):是一个三维向量坐标
3D实体的创建
- 加载3D模型,如fbx,gltf,obj
- 通过组合参数化的基本几何体创建
3D实体的绘制
- 材质
- 颜色
- 纹理
预制体
将游戏对象保存在工程中,在需要的时候创建出来,这就是预制体(prefab)
预制体存储着一个游戏对象,包括游戏对象的所有组件以及其下的所有子游戏对象
相机,光照,天空盒
相机
- Clear Flag
- 背景颜色
- Culling Mask
- 投影(透视、正交)
光照
- 类型:点光源、平行光、聚光灯、面积光
- 颜色
- 强度
- 阴影类型
天空盒
- 相机的清除标志设为“天空盒”
- 窗口-渲染-照明设置
- 环境-天空盒材质
控制与碰撞
- 初始化
- 物理输入
- 游戏逻辑
- 渲染
- 停顿
- 销毁
设置标签图层和物理规则
游戏中存在不同类型的游戏对象,他们需要放置在不同的图层中,并与其他游戏对象发生不同的交互
主角飞船:会与敌机,敌机炮弹,升级道具碰撞,但不会与主角飞船的炮弹碰撞
主角飞船的炮弹:与敌机,敌机的炮弹碰撞
敌机:与主角飞船和主角飞船的炮弹碰撞
敌机的炮弹:只与主角飞船碰撞
升级道具:只与主角飞船碰撞
玩法逻辑与UI
- 主角飞船添加射击功能
- 按下空格后实例化新炮弹
- 为子弹添加碰撞事件
- 屏幕右上角显示计分板
- 每次消灭敌机为玩家增加50分
- 重新开始游戏‘
知识点总结
- 学会在Unity中创建实体,给实体设置位姿,材质,刚体,脚本
- 学会配置相机,光,天空盒
- 理解实时游戏Update的时序机制
- 通过
Input.GetAxis()与InputManager监听玩家输入 - 用
Instantiate<GameObject>()动态生成游戏实体实例 - 从Camera.main获得相机参数,设置场景中的物体在画面中的位置
- 利用标签、图层管理器区分实体种类并设置物理规则
- 通过Collider组件与OnTrigger函数添加碰撞事件
- 通过图形用户界面GUI管理游戏界面