how-to-make-a-video-game-in-unity-gameplay-e06
Course: 【油管100w+】 Unity 入门视频
🎮 视频标题|How to make a Video Game in Unity — GAMEPLAY (E06)
👤 主讲人|Brackeys
📅 系列定位|Unity 初学者系列 Episode 06
🏷 关键词|Prefab | Level Design | Rigidbody | ForceMode | Drag | Fog | Lighting | Gameplay Polishing
🏛 课程目标
手工搭建第一个完整关卡、提升玩家控制手感、并添加“雾效(Fog)”与场景氛围,
让游戏真正从原型变为“可玩体验”。
🧭 第一步:关卡结构设计
核心思路:
- 使用 Prefab(预制体) 快速复制障碍物。
- 在场景中排列、组合障碍块构成关卡。
- 每个障碍可单独调整,但共享 Prefab 更新。
操作步骤:
1️⃣ 选中场景中的 Obstacle 对象 → 拖入 Project 面板 → 自动生成 Prefab。
2️⃣ 在场景中多次拖入该 Prefab,复制出多个障碍物。
3️⃣ 修改某个障碍的属性(如 Scale),点击 “Apply” → 所有实例同步更新。
✅ Prefab 是 Unity 中“复用设计”的基础组件。
只需一次调整,即可全局更新所有实例。
📦 第二步:扩大地面与场景布局
问题:
当前地面太短,玩家会很快掉落。
解决:
- 选中 Ground 对象:
- Scale Z →
10000 - Position Z →
4000
- Scale Z →
- 地面延伸至远方,形成可玩空间。
🧱 “无尽跑酷”通常通过移动障碍,而非移动玩家。
但本教程保持物理真实,让玩家自己前进。
📚 第三步:视图与层级优化技巧
| 功能 | 用法 |
|---|---|
| 场景视图切换 | 点击视角轴(如 Y、Z)可切换方向。 |
| 透视 → 等距视图 | 点击场景右上角小方块切换。 |
| 隐藏环境元素 | 通过右上角下拉菜单禁用 Skybox / Fog。 |
| 图层分组 | 新建 Layer(如 “Environment”),将地面归类。 |
| 锁定层 | 在 Layer 视图中勾选锁定图标 🔒,避免误选地面。 |
🧩 小技巧:使用 Ctrl(或 Cmd)+ D 复制物体,结合网格吸附功能快速布局障碍。
🧠 第四步:提升玩家移动手感
当前问题:左右移动反应迟钝。
原因:
AddForce() 默认以 “连续力(Force)” 模式工作,会逐帧叠加动量,造成迟滞。
解决方案:使用 ForceMode.VelocityChange
- 立即改变速度(忽略质量),响应更迅速。
修改代码:
rb.AddForce(sidewaysForce * Time.deltaTime, 0, 0, ForceMode.VelocityChange);📘 ForceMode 类型:
| 模式 | 含义 |
|---|---|
Force | 按物体质量施加持续力(默认) |
Impulse | 按质量施加瞬时力 |
VelocityChange | 忽略质量,直接改变速度(推荐用于角色控制) |
Acceleration | 忽略质量,连续加速度 |
✅ 建议:左右移动用 VelocityChange,前进力仍使用默认持续模式。
📦 第五步:调整物理阻力(Drag)与速度感
Rigidbody.drag:空气阻力值,越高则减速越快。- 调整建议:
- Drag =
1 - ForwardForce =
4000 - SidewaysForce =
100
- Drag =
结果:
- 更灵敏的控制反馈
- 快速转向时不会“漂移”
- 玩家响应更自然平滑
🧪 第六步:测试与关卡平衡
- 使用
Ctrl + P(Windows)或Cmd + P(Mac)快速进入播放模式。 - 调整障碍间距:
- 让玩家在 3–4 秒内必须反应一次。
- 过密会导致挫败,过稀则无挑战。
📘 经验:
手工调试难度优于程序生成。
视觉节奏与空间节奏同样重要。
🎇 第七步:添加雾效(Fog)增强氛围
操作路径:
1️⃣ 菜单栏 → Window → Rendering → Lighting
2️⃣ 在 Inspector → Environment → 勾选 “Fog”
3️⃣ 设置参数:
- Color:选取背景天色(淡蓝或灰蓝)
- Density:
0.2 - Mode:Linear(线性)
结果:
- 远处物体逐渐消隐
- 增强纵深感
- 营造神秘或梦幻气氛
🌫️ “看不清前方” = 玩家对未知的好奇 + 挑战感。
✅ 本集成果总结
| 功能模块 | 实现效果 |
|---|---|
| Prefab 管理 | 快速创建重复障碍并统一调整属性 |
| 地面扩展 | 无限延伸的游戏空间 |
| Layer 管理 | 精准选中对象与组织层级 |
| 物理优化 | ForceMode + Drag 提升手感 |
| 美术增强 | 雾效 + Lighting 改善视觉体验 |
🪄 延伸挑战任务
1️⃣ 加入动态障碍:
使用
transform.Translate()或Mathf.Sin()实现往返运动。2️⃣ 添加收集物(Coins):
带触发器 Collider +
OnTriggerEnter()检测拾取。3️⃣ 优化关卡编辑器:
创建自定义 Prefab 组(障碍 + 装饰 + 音效)。
4️⃣ 性能优化:
使用
Static Batching固定背景对象减少 Draw Call。
📚 下一集预告:GAME OVER & RESTART SYSTEM
Episode 07 将引入 GameManager,
实现死亡后自动重启关卡与 UI “Game Over” 提示。
你将学习:
- Scene 重载 (
SceneManager.LoadScene)- 延迟调用 (
Invoke())- UI Text 显示与隐藏