Stepping
SteppingもしくはStep-Assistとは、低い障害物をジャンプせずに歩いて上れるようプレイヤーを補助する仕組みのことである。
プレイヤーが上れる最大の高さは0.6bで、カーペット/ハーフブロック/ベッドなどを含む。
コンセプトはシンプルだが、その実装方法は非常に乱雑で、アスレチックにおいて悪用可能な衝突判定に関する様々なバグが発生している(Blipやジャンプキャンセルなど)。
概要:
- 当たり判定の検出はプレイヤーのバウンディングボックス(0.6 × 1.8 × 0.6)を使って行われる(注: 判定順はY→X→Z)。
- 地面にいる際に壁が検出されると、その壁を「乗り越え」ようとする(動画を参照)。
- 最終的に、水平方向の移動距離が最も長い方法が選ばれる。
注釈:
- 1.8より前では、天井付きの一部ブロックを上れなかった。
- その修正のために、steppingの手順に新しい方法が追加された(動画内で可視化)。
- 1.8.1より前では、steppingを利用して地面にめり込むことができた。
- これは、stepping手順の際に床の当たり判定が考慮されず、プレイヤーのバウンディングボックスが強制的に床より下に動かされることがあったのが原因(バウンディングボックスが下げられる距離が上げられた距離に関わらず0.6bだった)。
- 1.8.0では真上に天井がなくても発生するためより簡単にできる。
- 現在の実装方法にも多少のバグがある。
関連バグ
Steppingは地面での動きを対象としたもので、ハーフブロックや階段を上るといった本来の目的に対しては問題なく機能している。
しかし、垂直方向の動きの最初と最後にも適用されてしまっているため、いくつかのバグが引き起こされている。