3D 游戏中的实体模型、材质与位姿
-
3D游戏是由一个个具有形状的实体组成的。每个实体在空间中存在于特定的位置,有特定的姿态(旅旋转角度)。
-
3D实体的位姿态(Transform)
- 位置Position (x, y, z),是一个三维向量坐标
- 旋转Rotation (x, y, z),是一个三维向量坐标
- 缩放Scale (x, y,z),是一个三维向量坐标
- 在Unity中,绝大部分情况下,是先缩放,后旋转,最后平移。
-
3D 实体的创建
- 通过加载3D模型创建,如fbx、gltf、obj。
- 通过组合参数化的基本几何体创建。
-
3D实体的绘制
- 材页。
- 颜色。
- 纹理。
-
预制体
- 将游戏对象保存在工程中,在需要的时候创建出来,这就是预制体(prefab)。
- 预制体存储着一个游戏对象,包括游戏对象的所有组件以及其下的所有子游戏对象。
相机、光照、天空盒
-
相机
- Clear Flag
- 背景颜色
- Culling Mask
- 投影(透视、正交)
-
透视投影(Perspective)与正交投影(Orthographic)
-
光照
- 类型:点光源、平行光、聚光灯、面积光。
- 颜色。
- 强度。
- 阴影类型。
-
天空盒
- 相机的清除标志设为“天空盒”
- 窗口-渲染-照明设置
- 环境-天空盒材质
游戏控制、刚体属性与物理碰撞
-
为主角飞船添加控制逻辑
-
添加刚体组件。
- Add Component > Physics > Rigidbody。
- Use Gravity设置为 false,忽略重力的影响。
- isKinematic设置为true,飞船通过脚本而非力影响运动属性。
- 设置 Constraints,冻结Z轴位移以及X、Y、飞轴旋转。
-
添加自定义脚本。
- Add Component > New Script
-
-
lnput.GetAxis()和输入管理器(InputManager)
- InputManager是 Unity设置输入响应方式的管理列表,它的位置在Edit > ProjectSetting > Input 中。
-
添加敌机
-
为每架敌机预制体添加一个刚体。
- 选中敌机预制体,在菜单栏执行Component > Physics > Rigidbody
- 在新添加的刚体组件中,将Use Gravity设置为 false。
- 将isKinematic设置为true。
- 打开Constraints旁边的三角形展开按钮,冻结Z轴的坐标和XYZ轴的旋转。
-
建立敌机的脚本Enemey.cs.
-
为每架敌机预制体均添加脚本 Enemy.cs.
-