经典世嘉索尼克(《索尼克1》《索尼克2》《索尼克CD》《索尼克3与纳克鲁斯》)常被视为基于动量的2D平台跳跃游戏的黄金标准,但其实现以棘手著称:360°斜坡贴合、探测16×16方块高度阵列的感应器阵列、4种碰撞象限模式以及定点子像素算术。
关于这方面的权威资源一直是Sonic Retro上的索尼克物理指南,但当您只想要一份整洁的离线参考或代码伴侣时,翻阅零散的维基页面可能会很麻烦。
我将整个指南抓取并整理成一个干净、独立的 GitHub 仓库,其中所有114张原始图解PNG、感应器GIF、高度遮罩表和数学公式均本地链接。
🔵💨 指南涵盖内容
- 核心子像素与角度系统
- 256子像素定点算术(
1像素 = 256子像素)。 - 十六进制角度系统(硬件中0–255顺时针映射,与之相对的是数学符号中的逆时针表示)。
- 目标60 FPS的增量时序与帧率转换。
- 6感应器碰撞引擎
- 感应器A与B(地面): 双地板探测器,探测16×16高度遮罩阵列。
- 感应器C与D(天花板): 倒置的天花板探测器,用于跳跃和环道。
- 感应器E与F(墙壁): 推送感应器,在位置更新之前解决墙壁碰撞。
- 4种碰撞模式: 地板(
315°–45°)、右墙(46°–134°)、天花板(135°–225°)和左墙(226°–314°),这些模式在循环旋转中改变感应器方向。 - 物理数值与斜坡动量
- 索尼克、塔尔斯和纳克鲁斯的加速、减速、摩擦和斜坡因子物理数值。
- 滑落阈值(为何索尼克在速度低于2.5像素/帧时会从墙壁上滑落)。
- 滚动摩擦与正常奔跑摩擦,以及滚动跳跃截断值。
- 入水浮力、重力减半与动量衰减。
- 物体与敌人交互
- 受击框包围盒与图块碰撞半径框。
- 金环散射轨迹数学与收集冷却计时器。
- 旋转冲刺、超级脱出、下坠冲刺、瞬时护盾、飞行、滑翔/攀爬逻辑。
- 帧执行顺序:玩家控制 → 物体 → 碰撞 → 摄像机 → 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和感应器插图
评论 (0)