学习路径Learning path · 第 3 阶段Stage 3
手感问题清单
Game feel checklist
一句话:「手感不对」不是一种病,是六种。改错参数等于白改。
In one line: "it does not feel right" is not one problem, it is six. Changing the wrong parameter achieves nothing.
先诊断
⚠ 顺序很重要:先确认它是手感问题还是代码问题。
| 症状 | 先查这个 | 再调这个 |
|---|---|---|
| ⚠ 按键后有延迟感 | 输入缓冲有没有? | ⚠ 很可能不是手感问题 |
| 飘 | 重力值 | 增大重力;落地加一点下压 |
| 粘 | 空中控制是否过强 | 减小跳跃初速;加 coyote time |
| 滑(停不下来) | 摩擦 vs 空中阻力的比例 | 增大地面摩擦;注意两者是独立参数 |
| ⚠ 边缘判定模糊 | 碰撞盒是不是比视觉大 | 玩家碰撞盒通常该小一点 |
| 操作延迟响应 | 动画是否阻塞了输入 | 动画期间不应锁输入 |
Diagnose first
⚠ Order matters: establish whether it is a feel problem or a code problem.
| Symptom | Check this first | Then tune |
|---|---|---|
| ⚠ Lag after a keypress | Is there an input buffer? | ⚠ It is probably not a feel problem at all |
| Floaty | The gravity value | Raise gravity; add a little downward force on landing |
| Sticky | Is air control too strong | Lower jump velocity; add coyote time |
| Slippery (won't stop) | The ratio of friction to air drag | Raise ground friction; note they are separate parameters |
| ⚠ Uncertain edges | Is the collider larger than the sprite? | A player's hitbox is usually smaller |
| Delayed response | Is animation blocking input | Input should not be locked during animation |
三个最常被忽略的参数
| 参数 | 作用 | 忽略它的后果 |
|---|---|---|
| coyote time | 离开平台后仍可跳的宽限(帧) | 玩家会感觉「我明明按了」 |
| jump buffer | 落地前按跳会缓存(帧) | 同上 |
| 可变跳跃高度 | 松开跳跃键时截断上升 | 每次跳跃都一样高 → 失去控制感 |
⚠ 这三个是「操作手感」的地基。**它们不解决就会一直觉得不对劲,
但你可能说不出为什么。**
The three most forgotten parameters
| Parameter | What it does | What happens without it |
|---|---|---|
| coyote time | Grace window after leaving a platform during which you can still jump (in frames) | Players feel "but I definitely pressed it" |
| jump buffer | A jump pressed before landing is remembered (in frames) | Same |
| Variable jump height | Releasing the button cuts the rise short | Every jump is the same height → loss of control |
⚠ These three are the foundation of control feel. Without them something always feels off, and you may not be able to say why.
⚠ 最反直觉的一点
大部分「手感不对」是数值问题,不是代码问题。
把代码重写三遍不如把重力从 980 调到 1150 试一次。
⚠ 而且改完要每次只改一个 —— 一次改三个,你就不知道是哪个起的作用,
下次遇到相似问题还是不知道怎么调。
⚠ The most counter-intuitive point
Most "it does not feel right" cases are a numbers problem, not a code problem.
Rewriting the code three times is worse than trying gravity 1150 instead of 980 once.
⚠ And change one thing at a time — change three and you will not know which one mattered, so the next time you meet a similar problem you still cannot tune it.
判断你可以进入下一阶段了吗
- 别人玩过,没有问「这游戏怎么玩」
- 你自己玩 30 分钟不觉得无聊
- 关键参数是可调的(不是硬编码)
Can you move to the next stage?
- Someone else played it and did not ask "how do I play this?"
- You have played it for 30 minutes and still find it interesting
- The key parameters are adjustable rather than hard-coded