第 3 章 · 输入与物理值班岗:从按键到碰撞 本章要回答的三个问题:玩家的手指按下按键,到角色真的动了,中间隔了几道岗?为什么移动代码写在 Update 里角色就会抖、穿过地板就会掉?碰撞(Collision)与触发(Trigger)都是"两个东西碰上了",引擎凭什么区分并分别通知你?本章把这条链路拆开看。 为什么会有这一章 第 2 章把值班表立起来了,但值班员还没有活干。游戏的交互闭环依赖两个高度专业化的岗位:输入岗负责把现实世界的手指动作翻译成游戏世界的"意图",物理岗负责让虚拟世界遵守一点起码的力学常识。这两个岗是新玩法开发者最先碰壁的地方——输入要用新系统还是旧接口、刚体上该不该锁旋转、Trigger 要不要配刚体,每一个选择背后都是引擎的一套运行规则。
本章要回答的三个问题:玩家的手指按下按键,到角色真的动了,中间隔了几道岗?为什么移动代码写在 Update 里角色就会抖、穿过地板就会掉?碰撞(Collision)与触发(Trigger)都是"两个东西碰上了",引擎凭什么区分并分别通知你?本章把这条链路拆开看。
第 2 章把值班表立起来了,但值班员还没有活干。游戏的交互闭环依赖两个高度专业化的岗位:输入岗负责把现实世界的手指动作翻译成游戏世界的"意图",物理岗负责让虚拟世界遵守一点起码的力学常识。这两个岗是新玩法开发者最先碰壁的地方——输入要用新系统还是旧接口、刚体上该不该锁旋转、Trigger 要不要配刚体,每一个选择背后都是引擎的一套运行规则。
本章只有三节,但每节都围绕同一个案例推进:让第 2 章的平台跳跃角色真正跳起来、撞上墙、踩到开关。读完你会有完整的"输入到响应"链路认知,这正是所有动作、射击、跑酷类玩法共用的那根脊柱。
| 节 | 回答的问题 | 关键产出 |
|---|---|---|
| 3.1 输入系统 | 玩家指令从哪里进来、怎么变成意图 | 一套可换绑的输入读取写法 |
| 3.2 物理引擎与 FixedUpdate | 刚体如何被驱动、时间步怎么走 | 不抖、不穿、不飘的移动方案 |
| 3.3 碰撞器与触发器 | 碰撞事件如何分发与过滤 | 实体墙、拾取区、开关的完整实现 |
一句金句:输入岗管"想干什么",物理岗管"允许你干什么"——两个岗的交接纪律,就是角色手感的一半。

问:角色移动到底写 Update 还是 FixedUpdate?网上两种说法都有。
采集与执行分开就都对:输入读取与意图生成放 Update,真正驱动刚体的赋值放 FixedUpdate。两种说法的争执,多半是没把"读输入"与"动刚体"拆成两步。拆开之后,两边说法自动统一。
问:为什么我的物体互不碰撞?组件明明都挂了。
按顺序查三处:双方的 Layer 在物理矩阵里是否互相屏蔽(Project Settings 的 Physics 面板);碰撞器是否勾了 Is Trigger(勾了就不阻挡);需要收事件的物体身上有没有刚体(双方都无刚体时事件不触发)。三处覆盖九成"撞不上"的病例。
问:跳跃手感很飘,落地软绵绵的,调哪个参数?
三个旋钮按顺序试:加大下落的额外重力或减小跳跃冲量的垂直分量、把物理材质的弹性归零、缩短跳跃动画的过渡时长。手感是物理参数、动画过渡、输入判定三者合成的,单调一个往往治标。
三节的体量不大,但动手量不小:3.1 的输入案例要在真机上按出三种节奏,3.2 的控制器代码建议逐段抄写并观察每段的实际效果,3.3 的三件套要搭在一个关卡里互相配合。物理调试还有一条实用建议:把 Physics Debug 视图(Window 菜单的分析类目下)学会开关,它能直接把碰撞体、触发器与接触点画出来,很多"明明应该撞上"的疑案,开这个视图看一眼就有答案。
角色会跑会跳会撞之后,画面上还只有灰盒子。第 4 章的渲染与表现岗接手:材质与光照让它有颜色,动画让它有动作,UI 与音效让它有表情。3.3 节的触发器机制会在第 5 章对象池与拾取系统中直接复用。