经典世嘉索尼克(《索尼克1》《索尼克2》《索尼克CD》《索尼克3与纳克鲁斯》)常被视为基于动量的2D平台跳跃游戏的黄金标准,但其实现以棘手著称:360°斜坡贴合、探测16×16方块高度阵列的感应器阵列、4种碰撞象限模式以及定点子像素算术。

关于这方面的权威资源一直是Sonic Retro上的索尼克物理指南,但当您只想要一份整洁的离线参考或代码伴侣时,翻阅零散的维基页面可能会很麻烦。

我将整个指南抓取并整理成一个干净、独立的 GitHub 仓库,其中所有114张原始图解PNG、感应器GIF、高度遮罩表和数学公式均本地链接。

🔵💨 指南涵盖内容

  1. 核心子像素与角度系统
  2. 256子像素定点算术(1像素 = 256子像素)。
  3. 十六进制角度系统(硬件中0–255顺时针映射,与之相对的是数学符号中的逆时针表示)。
  4. 目标60 FPS的增量时序与帧率转换。
  5. 6感应器碰撞引擎
  6. 感应器A与B(地面): 双地板探测器,探测16×16高度遮罩阵列。
  7. 感应器C与D(天花板): 倒置的天花板探测器,用于跳跃和环道。
  8. 感应器E与F(墙壁): 推送感应器,在位置更新之前解决墙壁碰撞。
  9. 4种碰撞模式: 地板(315°–45°)、右墙(46°–134°)、天花板(135°–225°)和左墙(226°–314°),这些模式在循环旋转中改变感应器方向。
  10. 物理数值与斜坡动量
  11. 索尼克、塔尔斯和纳克鲁斯的加速、减速、摩擦和斜坡因子物理数值。
  12. 滑落阈值(为何索尼克在速度低于2.5像素/帧时会从墙壁上滑落)。
  13. 滚动摩擦与正常奔跑摩擦,以及滚动跳跃截断值。
  14. 入水浮力、重力减半与动量衰减。
  15. 物体与敌人交互
  16. 受击框包围盒与图块碰撞半径框。
  17. 金环散射轨迹数学与收集冷却计时器。
  18. 旋转冲刺、超级脱出、下坠冲刺、瞬时护盾、飞行、滑翔/攀爬逻辑。
  19. 帧执行顺序:玩家控制 → 物体 → 碰撞 → 摄像机 → V-INT。

📂 仓库链接与结构

https://github.com/trentbrew/sonic-physics-guide

├── README.md                      # 主索引与快速参考物理常量
├── docs/
│   ├── 00-overview.md
│   ├── 01-basics.md               # 物体、受击框、地图图块、子像素、角度
│   ├── 02-calculations.md         # 定点数学与角度范围转换
│   ├── 04-terrain-collision.md    # 方块数据、高度遮罩、感应器阵列
│   ├── 06-slope-collision.md      # 地面吸附、4种碰撞模式、空中着陆
│   ├── 09-slope-physics.md        # 附着、滑落阈值、墙壁奔跑
│   ├── 10-forces.md               # 主加速/最高速度/跳跃表
│   ├── 11-forces-subtopics/       # 空中状态、跳跃、滚动、伤害、水下
│   ├── 12-main-game-loop.md       # 每帧执行顺序
│   ├── 13-game-objects.md         # 弹簧、尖刺、金环、监视器、弹板
│   ├── 16-special-abilities.md    # 旋转冲刺、脱出、下坠冲刺、飞行、滑翔
│   └── ...(共29个文档)
└── images/                        # 所有114张本地图解、GIF和感应器插图