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

Input.GetAxis 轴向输入

GetAxis 已掌握。下一课学按键检测 GetKey。

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

🎯本节学习目标

  • 理解 GetAxis 输入值
  • 掌握水平/垂直轴
  • 实现平滑移动

🚀课程导读

GetAxis 返回“平滑的 -1 到 1 数值”,是控制移动的标准方式。本课彻底搞懂它。

Input.GetAxis 基础

“轴”就是一组按键的“虚拟摇杆”。

  1. 【Horizontal 水平轴】Input.GetAxis("Horizontal"):按 A/← 返回趋近 -1,按 D/→ 返回趋近 1,不按返回 0。
  2. 【Vertical 垂直轴】Input.GetAxis("Vertical"):按 W/↑ 返回 +1,按 S/↓ 返回 -1。
  3. 【平滑】GetAxis 是“逐渐变化”的(有加速度),不会瞬间跳到 1,手感柔和。
  4. 【映射配置】Edit → Project Settings → Input Manager:能看到每个轴的按键映射(可自定义)。
  5. 【用法】float h = Input.GetAxis("Horizontal");
  6. 【组合移动】new Vector3(h, 0, v) 得到二维输入方向。
  7. 【注意】GetAxis 的 0 表示“无输入”,不会误判为按键按下。
  8. 【兄弟方法】GetAxisRaw:不平滑,直接返回 -1/0/1,用于精确控制(平台跳跃常用)。
💡
GetAxis 平滑适合“驾驶/滑行手感”;GetAxisRaw 干脆适合“格斗/精确走位”。

实战:控制角色移动

用轴输入实现移动。

  1. 新建脚本 PlayerMove(挂到带刚体的角色上):
  2. public float speed = 5f;
  3. void Update() {
  4. float h = Input.GetAxis("Horizontal");
  5. float v = Input.GetAxis("Vertical");
  6. Vector3 move = new Vector3(h, 0, v) * speed * Time.deltaTime;
  7. transform.Translate(move, Space.World);
  8. }
  9. 播放:WASD 或方向键控制角色移动。
  10. 【转向】让角色朝移动方向转身:if (move != Vector3.zero) transform.rotation = Quaternion.LookRotation(move);
  11. 【刚体版】用 rb.velocity 控制:rb.velocity = new Vector3(h * speed, rb.velocity.y, v * speed);(物理更平滑)。
  12. 【相对相机】让移动方向相对相机朝向(第 118 课进阶)。
  13. 【Debug】打印 h、v 观察平滑值变化。
GetAxis 五秒上手:读轴 → 组成向量 → 乘以速度与 deltaTime。

常见错误与排查

错误:GetAxis 没反应?
原因:Input Manager 映射缺失或焦点不在游戏视图
解决:确认 Input Manager 里有 Horizontal/Vertical 轴;点击 Game 视图再按键盘。

动手练习

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

  • 用 GetAxis 实现四方向移动
  • 打印 h、v 观察平滑变化
  • 把角色旋转朝向移动方向

本节小结

GetAxis 已掌握。下一课学按键检测 GetKey。

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

← 上一课综合练习:打砖块物理小游戏