这是我参与「第五届青训营 」伴学笔记创作活动的第 17 天
1、3D实体搭建
3D实体
3D游戏是由一个个具有形状的实体组成的。每个实体在空间中存在于特定的位置,有特定的姿态(旋转角度)。
3D实体位姿态
- 位置Position(x,y,z)
- 旋转Rotation(x,y,x)
- 缩放Scale(x,y,z)
位置、旋转、缩放都是一个三维向量坐标。在Unity中,绝大部分情况下,是先缩放,后旋转,然后平移。
3D实体的创建
- 从美术小伙伴那拿资源模型,直接使用即可
- 通过组合参数化的基本几何体创建
创建好之后可以调节实体的材质、颜色和纹理。
什么是预制体?将游戏对象保存在工程中,在需要的时候创建出来,这就是预制体。预制体存储着一个游戏对象,包括游戏对象的所有组件以及其下的所有字游戏对象。
2、相机、光照、天空盒
相机、投影方式、光照设置和天空盒可理解为为游戏场景布局的工具
相机
- Clear Flag
- 背景颜色
- Culling Mask
- 投影(透视、正交)
透视和正交投影方式
光照
- 类型:点光源、平行光、聚光灯、面积光。
- 颜色。
- 强度。
- 阴影类型。
天空盒
天空盒可以理解为是一个立方体,将整个场景进行包裹,即使旋转场景依然可以看到环境上的纹理。
设置方法:
- 相机的清除标志设置为“天空盒”
- 窗口-渲染-照明设置
- 环境-天空盒材质
3、控制与碰撞
一帧的动作
可以为实体添加控制逻辑来实现某些动作,如:在重力的作用下往下掉落。
- 添加刚体组件
- 添加自定义脚本
设置标签、图层和物理规则
游戏中存在不同的游戏对象,需放在不同的图层,并与其他对象发生不同的交互
- 主角:会与敌方的炮弹,敌方和道具碰撞,不会与自己的炮弹碰撞。
- 敌方:与主角和主角的炮弹发生碰撞。
- 道具:只与主角发生碰撞。
总结
3D游戏的开发感觉上是实体+环境+控制逻辑和碰撞等一些基础的知识实现。以课程中的飞机例子来说:实体的创建+添加上相机、光照、天空盒+控制逻辑可以实现简单的3D飞机案例。