首页/ 第 8 章 · 输入系统/ 第 125 课
LESSON 125 · 输入系统

综合练习:3D 场景漫游

场景漫游完成!输入章毕业。下一章进入动画系统,让角色“活起来”。

⏱ 约 25 分钟📊 难度:入门🗂 第 8 章 · 输入系统📍 第 125 / 300 课
课程进度
125 / 300

🎯本节学习目标

  • 综合运用第 8 章全部知识
  • 完成可操作的第一人称漫游
  • 体验完整交互闭环

🚀课程导读

把移动、视角、跳跃组合成一个“第一人称漫游”,在一个小场景里自由探索。输入章毕业项目!

搭建漫游场景

先有可逛的世界。

  1. 新建场景 Roam。
  2. 【地面】大 Plane 作为地面,赋木色材质。
  3. 【障碍】放几个 Cube/Sphere/圆柱作为“地标”,摆在不同位置与高度。
  4. 【高台】放几个高低错落的平台(Cube),方便测试跳跃。
  5. 【环境】加几盏点光源/方向光,让场景明亮。
  6. 【天空盒】设置 Default-Skybox(第 29 课)。
  7. 【玩家起点】一个空对象命名 PlayerStart 放 (0, 1, 0)。
💡
场景越丰富,漫游越有感觉,先简单后加料。

编写漫游控制

第一人称 + 跳跃。

  1. 创建玩家:空对象 Player(胶囊体更好看,Scale (0.8,1.8,0.8)),挂 Rigidbody(或 CharacterController)。
  2. 给玩家挂两个脚本:
  3. ① MouseLook(第 118 课):鼠标水平+垂直视角,Cursor 锁定。
  4. ② FirstPersonMove:
  5. float h = Input.GetAxis("Horizontal"); float v = Input.GetAxis("Vertical");
  6. Vector3 dir = (transform.forward * v + transform.right * h).normalized;
  7. GetComponent<Rigidbody>().velocity = new Vector3(dir.x * speed, rb.velocity.y, dir.z * speed);
  8. ③ 跳跃:grounded 时空格 AddForce Impulse(第 120 课)。
  9. 把相机作为玩家的子物体,放在 (0,1.6,0)(人眼高度),视角旋转脚本控制相机或玩家。
  10. 【注意】水平旋转放玩家(身体),俯仰放相机(子物体)更专业。
  11. 播放:WASD 行走、鼠标转头、空格跳跃,探索整个场景!
第一人称漫游 = 刚体移动 + 鼠标视角 + 跳跃 + 碰撞。四件套齐活。

打磨与收尾

提升体验。

  1. 【速度手感】调 speed(4-6 合适),加跑步(Shift ×1.8)。
  2. 【跳跃手感】jumpForce 8-10,跳上高台验证。
  3. 【相机平滑】相机子物体 + LateUpdate 微平滑。
  4. 【音效】(可选)加脚步音效(第 11 章)。
  5. 【完成标记】做一个“探索完成”触发区(Is Trigger),走进触发打印“恭喜探索完成!”(第 96 课)。
  6. 检查 Console 无报错,保存。
  7. 展示给你的朋友:这是你亲手做的可玩漫游!
💡
输入章完结!你已掌握让玩家“操控”游戏的完整能力。下一章进入动画系统。

常见错误与排查

错误:视角乱转或角色乱飘?
原因:相机与身体旋转职责没分清
解决:水平旋转放玩家,俯仰放相机子物体;垂直角度 Clamp。

动手练习

课后小任务(做出来才算真的学会)

  • 完成第一人称漫游(移动+视角+跳跃)
  • 加跑步与触发区
  • (进阶)加脚步音效与场景传送门

本节小结

场景漫游完成!输入章毕业。下一章进入动画系统,让角色“活起来”。

完成打卡后,主站会实时更新你的学习进度 🎯

← 上一课自定义按键与键位映射