这是我参与「第五届青训营 」伴学笔记创作活动的第17天
1、3D实体搭建
3D实体
3D游戏是由一个个具有形状的实体组成的。每个实体在空间中存在于特定的位置,有特定的姿态(旋转角度)。
3D实体位姿态
- 位置Position(x,y,z)
- 旋转Rotation(x,y,x)
- 缩放Scale(x,y,z)
3D实体的创建
从美术小伙伴那拿资源模型,直接使用即可 通过组合参数化的基本几何体创建 创建好之后可以调节实体的材质、颜色和纹理。
什么是预制体?将游戏对象保存在工程中,在需要的时候创建出来,这就是预制体。预制体存储着一个游戏对象,包括游戏对象的所有组件以及其下的所有字游戏对象。
2、相机、光照、天空盒
相机、投影方式、光照设置和天空盒可理解为为游戏场景布局的工具
相机
Clear Flag 背景颜色 Culling Mask 投影(透视、正交) 透视和正交投影方式 光照
- 类型:点光源、平行光、聚光灯、面积光。
- 颜色。
- 强度。
- 阴影类型。
天空盒
天空盒可以理解为是一个立方体,将整个场景进行包裹,即使旋转场景依然可以看到环境上的纹理。
设置方法:
- 相机的清除标志设置为“天空盒”
- 窗口-渲染-照明设置
- 环境-天空盒材质
3、控制与碰撞
一帧的动作
课后思考
- 写入存储系统的粒度太大,会不会导致数据原子性问题?例如一次性写100MB,如果系统突然crash,会不会只有一部分数据持久化了,另一部分丢失了?如果要解决原子性问题,一般会设计什么机制?
- 在从应用程序到存储介质的链路上,无论读还是写,数据可能要被拷贝好几次,这几次拷贝能不能去掉?如果我们去掉大部分拷贝操作,会有什么副作用,要怎么缓解副作用?
- 一个关系型数据库大概率是会被并发访问的,如果要保证并发安全,除了在行数据上加悲观锁还有其他方式吗?