ソニックゲームの物理の概要。 パート3および4:ジャンプとスピン





翻訳者から:レビューの一部は小さいため、2つの部分を一度に翻訳することにしました。



シリーズの他の部分へのリンク:

パート1:固体タイル

パート2:実行中

パート5と6:リングの喪失と水中への侵入

パート7および8:スプリングとギズモ、スーパースピード



パート3:ジャンプ





空気加速



ソニックが空中にいるとき、彼は地上よりも速く加速できます。 正確に言うと、2倍の速さ:0.09375。 この値をairと呼びます。



空気には摩擦がありませんが(以下で説明する複雑な抵抗効果があります)、ほとんどの場合、ソニックが空気中に一定の水平速度を持っている場合、プレイヤーがそれを変えるかソニックが壁にぶつかるまで、彼はそれを維持します。



さらに、速度を落とすための違いもありません。左ボタンを押すと、常に水平速度から空気が差し引かれ、右ボタンを押すと、 空気が追加されます。



ソニックの空気中の最大速度は地上と同じで、6です。



重力



重力の値は0.21875( grv )です。 この値は、ソニックが地上にいない各ステップで垂直速度に加算されます。 それは彼が崖から滑り落ちるときに倒れ、ジャンプするときに彼が際限なく上に移動することを許可しません。



最大垂直速度



ソニック1では、 ソニックの垂直速度は無制限のようです。 落下すると、 grvは垂直速度を増加させ続け、無限に増加させます。



Sonic CDには制限が導入されており、Sonicは1ステップあたり16ピクセルより速く落ちることはできません。 この制限は重要です。ソニックはカメラを追い越すことはなく、地面を飛び回ることもありません。 この制限は、コリジョンカオスなどのレベルの高さの増加、およびタイダルテンペストの無限の垂直シャフトのために導入されたと思います。 この制限がないと、Sonicは一部の領域で途方もない速度に加速する可能性があり、ゲームプレイの中断につながる可能性があります。



{ Y speed = Y speed + grv if Y speed > 16 then Y speed = 16 }
      
      





空気抵抗



Sonicが空中にある各ステップで、特定の条件が満たされた場合にのみ、Sonicの水平速度に特別な公式が適用されます。 まず、垂直方向の速度は負でなければなりません。 第二に、垂直速度は-4より大きい必要があります(たとえば、-3または-3.5は-4より大きい)。 第三に、水平速度の絶対値は0.125より大きい必要があります。 これらの条件が満たされると、水平速度に0.96875の係数が乗算されます。



  { if Y speed < 0 and Y speed is > -4 { if absolute(X speed) >= 0.125 then X speed = X speed * 0.96875 } }
      
      





実際には、これはおおよその計算に過ぎず、その理由は次のとおりです。元のゲームは2バイトを使用してSonicの速度値を格納するため、最初のピクセルはピクセルで、2番目のピクセルはサブピクセルであるため、1ステップあたり6.5ピクセルの速度は16進値$ 0680で表されます。 10進数では1664です。もちろん、Sonicはステップあたり1,000ピクセルを超える速度で移動することはありません。 1ピクセル= 100ドル(256)、半分のピクセル= 80ドル(128)。 したがって、元のゲームでは、空気抵抗は次のように計算する必要があります。



  { if Y speed < 0 and Y speed is > -$0400 { X speed = X speed - ( X speed div $0020 ) ; "div" -    } }
      
      





常に20ドル未満(32)である水平速度の比較的低い値に対してこれらの計算を実行した場合、これは水平速度にほとんど影響しません。 なんで? 32 x 32未満の整数除算では結果は0になるため、元のゲームでは、空気抵抗を計算する前に、特定の値の水平速度が大きいかどうかを確認する必要はありません-水平速度が$ 001F以下の場合、何の場合も何もありません起こります。



したがって、次のように空気抵抗をより正確にエミュレートできます。



  { if Y speed < 0 and Y speed is > -4 { X speed = X speed - ( ( X speed div 0.125 ) / 256 ) } }
      
      





いずれにせよ、2つの方法の違いは非常に重要ではなく、2番目の方法の方が技術的に正確です。



空気抵抗は、垂直速度にgrvを追加する前に各ステップで計算されます。



ジャンプ速度



すでに慣れていますが、 ソニックザヘッジホッグのリリース時には、ジャンプの高さを固定して使用するゲームがたくさんありました。 プレイヤーがジャンプボタンをどれだけ早く離しても問題ありません。キャラクターは同じピクセル数だけ上昇します。 マリオソニックなどのゲームは、より柔軟で応答性の高いコントロールを備えた最初のものであり、キャラクターコントロールの感覚が向上しました。



可変ジャンプの高さはどのように調整されますか?



ソニックが地面にあるときに上ボタンを押すと、垂直速度は-6.5( jmp )になります。 ジャンプの高さが変化しないゲームでは、重力の追加を除いて、その後の計算は行われず、キャラクターの速度はその影響で徐々に低下します。 結果は、100ピクセルの高さまで正確に1秒続くジャンプになります。 このタイプのジャンプは、プレイヤーがジャンプボタンを押して、ソニックが軌跡の最上部に到達するまでそれを保持する場合に取得されます。 ただし、可変ジャンプ高さを作成するコツは、ボタンを離すことです。



プレーヤーがジャンプ後に空中でジャンプボタンを離すと、コンピューターはソニックが上に移動しているかどうかを確認します(つまり、垂直速度が負です)。 そうである場合、垂直速度が-4未満であるかどうかを確認します(たとえば、-5は-4未満です)。 その場合、-4が垂直速度に割り当てられます。 したがって、ジャンプボタンを離すと、いつでもジャンプを完了できます。 プレーヤーがジャンプ後の次のステップでボタンを離すと、ソニックは最短ジャンプを行います。



コンピューターがジャンプボタンのクリックを検出するステップでは、Sonicは実際には上に移動しません。 したがって、次のステップで、彼はジャンプボタンのリリースを認識でき、ソニックはjmpの速度で上昇することなく、-4の速度で上昇し始めます。



Sonicを新しい位置に移動し、垂直速度にgrvを追加する前に、ジャンプボタンのリリースを確認します。



残念ながら、コンピュータはSonicを移動する前にジャンプボタンの押下をチェックします。 プレーヤーがジャンプボタンを押すと、サイクルの残りの部分を離れるので、ソニックはプレーヤーがジャンプするステップ中に、垂直位置でも水平位置でも移動しません。 これは間違っています。なぜなら、水平速度は失われず、彼は動き続けなければならないからです。 この欠点は、新しいエンジンで解消できます。



テイルはソニックと同じようにジャンプし、ナックルズはjmp値がわずかに低い-6であるため、少し低くジャンプします。







パート4:回転





摩擦



ソニックが押されたときに回転を開始するとき 十字架上にありますが、加速することはできません。 プレーヤーがボタンを長時間、どの方向に押しても、プレーヤーが何も押していないかのように動作します。 この場合に関係するのは摩擦だけです。ここでは0.0234375(通常の半分)の値を持っているため、ソニックはホイールやボールのようにスムーズに回転しているようです。 実際、Mega Driveは回転中の摩擦を計算し、通常の摩擦の値を半分にします。 Game Genieを使用して摩擦の値を変更すると、回転摩擦は常に半分になります。



スローダウン



ただし、ソニックは回転中に減速する可能性があります。 ボタンをその動きと反対方向に押すと、水平速度が0.125減少します。 さらに、歩行動作とは異なり、プレーヤーが進行方向にボタンを押しても、回転中の摩擦は動作し続けます。 したがって、実際には、減速すると、水平速度は各ステップで0.125 + 0.0234375、または0.1484375ずつ減少します。



回転中に、走行中と同じ減速の異常が発生するのは奇妙です。 水平速度の絶対値が0.1484375より小さい場合、水平速度をゼロに等しくする代わりにこの値が減算され、反対方向で0.5に等しくなります。 そのため、ソニックは、加速できない場合でも、回転中に予期せず回転する可能性があります! このバグはSonic 3およびKnucklesで修正されました。おそらくプログラマー自身がこの動作を望ましくないと感じました。



最高速度



(注:これは現時点でSonic 1および2でテストされています。これがSonic 3KまたはSonic CDに当てはまるかどうかはまだわかっていません。)

ソニックは自分で速く転がることができないという事実にもかかわらず、これは丘が彼に小さな追加の衝動を与えることができないという意味ではありません。 丘と斜面は、非常に高速で回転するために使用できます。 ランニングの場合と同様に、回転中にSonicには最大速度制限がありますが、はるかに高く、ステップごとに16ピクセルに達します。 ただし、実行中とは異なり、ソニックはこの速度制限を決して克服することはできません。 そのgspが16の値に達してさらに増加し​​ようとすると、自動的に16に設定されます。



条件



ソニック12のゲームでは、 ソニックの絶対水平速度が0.53125を超えると、 ソニックは回転を開始できません。



Sonic 3およびKnucklesでは、この値は1.03125に増加します。 下向きボタンを押して回転させることができるため、これは非常に便利です。 ソニックが曲がる前に停止する必要がある場合、プレーヤーは回転をすばやく開始することが困難になります。



ソニック3とナックルズでは、ソニックの絶対水平速度が0.5を下回ると回転が停止します。おそらくこの方法で、前のゲームで回転するときに反対方向に回転することに関連する異常を排除したかったのです。



回転ジャンプ



ソニック1、2、3、およびナックルでは、プレーヤーは回転ジャンプ時に方向ボタンを使用して空中のソニックの軌道を制御できません。 したがって、速度を上げるために回転を開始してから、正確なジャンプを行うことは困難です。 Sonic 3およびSonic&Knucklesでは、プレーヤーはWカイテンアタックを実行することにより、方向ボタンの制御を取り戻すことができます。



W怪奇襲撃
彼はInsta-Shield 、別名W Spin Attack (W回転アタック )(日本)、別名Twin-Spin Attack in Sonic Generationsです。これはSonic the Hedgehog 3Sonicが最初に使用した特別な動きです。 ジャンプして空中のジャンプボタンをもう一度押すと、短いフラッシュが作成され、ソニックの攻撃範囲が広がり、一時的に無敵になります。 このテクニックは、攻撃半径のわずかに外側にあり、Orbinautなどのスパイクされた敵で覆われているボスを攻撃するのに役立ちます。 ソニック以外のキャラクターは誰もこのテクニックを使用できません。





オルビナウト



ただし、 Sonic CDでは 、通常のジャンプのようにプレーヤーは回転で行われたジャンプを制御できます。 これはプレイヤーにとってより正直なようです。



All Articles