3D游戏实战开发 | 青训营笔记

244 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 17 天

Unity3D是什么

Unity3D是由Unity Technologies开发的一个能让玩家轻松创建诸如三维游戏、虚拟现实、实时电影与动画、建筑可视化、数字教育、汽车/运输与制造等众多类型互动内容的多平台的综合型游戏开发工具,是一款功能强大的专业游戏引擎。Unity类似于Director,Blender,Virtools或Torque Game Builder等利用交互的图形化开发环境为首要方式的软件。

3D实体

  • 3D游戏是由一个个具体形状的实体组成的,每一个实体在空间中存在于特定的位置,有特定的姿态(旋转角度)。

3D实体的位姿态(Transform)

  • 位置Position(x,y,z) 是三维向量坐标
  • 旋转 Rotation(x,y,z), 是一个三维向量坐标
  • 缩放 Scale(x,y,z), 是一个三维向量坐标

在Untiy中,绝大部分情况下,是先缩放,后旋转,最后平移

3D实体的创建

  • 通过加载 3D 模型创建,如 fbx、gltf、obj
  • 通过组合参数化的基本几何体创建。

3D实体的绘制

  • 材质
  • 颜色
  • 纹理

相机,光照,天空盒

相机

  1. Clear Flag。
  2. 背景颜色。
  3. Culling Mask。
  4. 投影(透视、正交)

光照

  1. 类型:点光源、平行光、聚光灯、面积光。
  2. 颜色。
  3. 强度。
  4. 阴影类型。

天空盒

  1. 相机的清除标志设为"天空盒"。
  2. 窗口-渲染照明设置。
  3. 环境-天空盒材质。

控制与碰撞

为主角飞船添加控制逻辑

添加刚体组件。

  • Add Component > Physics > Rigidbody.
  • Use Gravity设置为false,忽略重力的影响。
  • isKinematic设置为true,飞船通过脚本而非力影响运动属性。
  • 设置Constraints ,冻结Z轴位移以及X、Y、Z轴旋转。

添加自定义脚本。

  • Add Component > New Script

添加敌机

为每架敌机预制体添加一个刚体。

  • 选中敌机预制体,在菜单栏执行Component > Physics > Rigidbody
  • 在新添加的刚体组件中,将Use Gravity设置为false.
  • 将isKinematic设置为true。
  • 打开Constraints旁边的三角形展开按钮,冻结Z轴的坐标和XYZ轴的旋转。

建立敌机的脚本Enemey.cs。

为每架敌机预制体均添加脚本Enemy.cs。