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

188 阅读2分钟

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

游戏静态场景搭建

3D实体

  1. 可以通过加载3D模型创建,如fbx、gltf、obj
  2. 也可以通过组合参数化的基本几何体创建
  • 材质
  • 颜色
  • 纹理

预制体 prefab

预制体存储在工程文件中,在需要时实例化

环境

相机

降维

  • Clear FLag
  • 背景颜色
  • culling Mask:可以裁剪掉特定对象
  • 投影(透视:近大远小、正交)

FOV: 透视投影的视野宽度

光照

  1. 光源:
    • 点光源
    • 平行光
    • ......
  2. 颜色
  3. 强度
  4. 阴影类型

天空盒

顾名思义,从任何方向能看到的天空的纹理。

控制与碰撞

实时游戏时序

  1. 初始化
  2. 物理碰撞检测
  3. 输入
  4. 游戏逻辑
  5. 渲染
  6. 停顿
  7. 销毁

其中2-6步在每一帧中反复进行。

刚体部件:可以设置重力、isKenematic可以用于控制刚体受力状态,constrain可以用于设置物体在各个维度上能否旋转。

通过自定义脚本为对象添加控制逻辑。 脚本继承于MonoBehaviour基类,包含Start()、Update()等方法。

输入管理器

可以通过内置的Input Manager进行控制。 Input Manager包括以下几种类型的控制方法:

  1. 键盘按键
  2. 手柄按钮
  3. 虚拟摇杆

碰撞盒

碰撞与刚体一样属于内置的3D物理模拟能力。 通过Colliders配置Unity中GameObjects的碰撞。决定了GameObjects的物理碰撞发生时的形状。

碰撞盒不需要与对象的Mesh完全一致。

内置的collider包括Box Collider,Sphere Collider等

标签与层级

Tag为游戏中的对象提供了标识符,便于作出区分。

不同类型的游戏对象可以放置在不同的图层中,与其它游戏对象发生不同的交互。

玩法逻辑与UI

玩法逻辑即游戏中核心交互玩法的实现。在这个飞机大战游戏中需要设计飞机射击功能、子弹碰撞检测、击落敌机计分、重新开始游戏等核心逻辑。

UI则为展现给用户的部分,希望UI能顺应逻辑,给予用户正确的视觉体验。

除了自定义脚本以外,Unity提供了大量GUI配置项用于管理游戏界面。