首页/ 第 6 章 · 游戏对象与组件交互/ 第 90 课
LESSON 90 · 游戏对象与组件交互

综合练习:让方块动起来

综合练习完成!你已拥有“会动的方块”。下一章进入物理系统,让世界更真实。

⏱ 约 25 分钟📊 难度:入门🗂 第 6 章 · 游戏对象与组件交互📍 第 90 / 300 课
课程进度
90 / 300

🎯本节学习目标

  • 综合运用本章知识
  • 独立完成交互式小场景
  • 体验完整开发流程

🚀课程导读

把第 6 章的知识全部串起来:做一个小方块,能用键盘移动、旋转、跳跃、发射小球。这是里程碑练习!

准备工作

搭好练习环境。

  1. 新建场景并命名 Practice06。
  2. 创建地面:Plane 或 Cube 缩放拉大当地面。
  3. 创建主玩家:Cube 命名为 Player,Scale (1,1,1),位置 (0,1,0)。
  4. 给 Player 加 Rigidbody(第 91 课刚体,先加上为跳跃做准备)。
  5. 创建子弹预制体:Sphere 缩小、加黄色材质、加 Rigidbody、做成预制体后删除场景中的原型。
  6. 创建脚本 PlayerController 挂到 Player 上。
  7. 开始写代码(逐步来)。
💡
先搭环境再写代码,避免边写边缺对象。

编写 PlayerController

一个脚本搞定移动+跳跃+发射。

  1. 在 PlayerController 里写(用本章学的所有知识):
  2. public GameObject bulletPrefab; public float speed = 6f; public float jumpPower = 8f; public float rotateSpeed = 120f;
  3. void Update() {
  4. float h = Input.GetAxis("Horizontal"); // 左右
  5. float v = Input.GetAxis("Vertical"); // 前后
  6. transform.Translate(new Vector3(h, 0, v) * speed * Time.deltaTime); // 移动
  7. if (Input.GetKeyDown(KeyCode.Space)) { GetComponent<Rigidbody>().AddForce(Vector3.up * jumpPower, ForceMode.Impulse); } // 跳跃
  8. if (Input.GetKeyDown(KeyCode.Q)) { Instantiate(bulletPrefab, transform.position + transform.forward, transform.rotation); } // 发射
  9. }
  10. 【说明】GetAxis 在第 111 课详讲;AddForce 第 94 课;Instantiate 第 76 课。
  11. 保存,把子弹预制体拖到 PlayerController 的 bulletPrefab 槽。
  12. 播放:WASD 移动、空格跳跃、Q 发射子弹!
你已经能做出“可操作的小游戏片段”了,后续课程就是把这些能力打磨得更专业。

收尾与优化

验证与整理。

  1. 给子弹加自动销毁:在子弹预制体加脚本,3 秒后 Destroy(第 77 课)。
  2. 让子弹朝前方飞:子弹脚本里 transform.Translate(Vector3.forward * 10f * Time.deltaTime)。
  3. 检查 Console 无报错、无警告。
  4. 保存场景与项目。
  5. 试着调整 speed/jumpPower 数值体验不同手感。
  6. 把 PlayerController 的字段用 Header/Range 整理好(第 84 课)。
  7. 总结:本场景用到了生命周期、Transform、输入、刚体、实例化、销毁、预制体。
💡
完成一个“小闭环”后保存、整理、复盘,学习效果最好。

常见错误与排查

错误:空格跳跃没反应?
原因:Rigidbody 缺失或跳跃力太小
解决:确认 Player 有 Rigidbody;jumpPower 调到 8 以上;检查 AddForce 是否被重力抵消。

动手练习

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

  • 完成移动+跳跃+发射的 PlayerController
  • 给子弹加方向与自动销毁
  • 调整参数找到合适手感

本节小结

综合练习完成!你已拥有“会动的方块”。下一章进入物理系统,让世界更真实。

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

← 上一课运行时调试技巧