
ソニックに関するゲームの物理学に関する一連の記事の
続き 。
注 :
このレビューでは、Genesis / Mega Driveおよび
Sonic CDのゲームの4つの部分すべてを取り上げています。
以下に書かれていることはすべて、ソニックが特別なボーナスなしで平らで乾燥した表面にあるときの状況を指します。 曲線、水中の挙動の物理学、ボーナススーパーソニックとスピードシューズは別の記事で検討されます。 この記事の
手順では、文字の手順ではなくプログラムのサイクルを参照しています。
シリーズの他の部分へのリンク:パート1:固体タイルパート3および4:ジャンプとスピンパート5と6:リングの喪失と水中への侵入パート7および8:スプリングとギズモ、スーパースピード変数このパートでは、次の変数と定数がよく使用されます。
運動の原理加速ボタンを押し続ける
スタンバイモードから、
accによって各ステップで
Xspの速度が増加し始めます。 ボタンを押し続ける
スタンバイモードから、
Xspの速度は
accだけ減少し始めます。
スローダウンソニックがすでに動いているが、押されても立っていない場合

または

、コンピューターはボタンが既に移動している方向に押されているかどうかを確認します。 その場合、通常どおり
accが Xspに追加されます。 ボタンを反対方向に押すと、代わりに減速度定数(
dec )が追加されます。 これにより、ソニックはすぐに向きを変えることができます。
accと
decの間に差がなかった場合、Sonicの速度の変更に時間がかかりすぎて、プレイヤーを困らせます。 優れたエンジンは、このような子供時代の間違いを犯すべきではありません。
クリックした後、
Xsp = 0.1であると思うかもしれません
decを減算し、
Xsp値は-0.4です。 奇妙なことですが、これはMega Driveのゲームには当てはまりません。
decの加算または減算の結果、
Xspの符号が
変化する場合、
Xspには値
dec が割り当てられます。 たとえば、上記の場合、
Xspは-0.5になります。 これの面白い結果はこの動作になります:クリックできます

ワンステップでクリックして

(またはその逆)、クリックした場合よりも速く実行を開始します

! 最終速度はまだ1ステップあたり1ピクセルより低いため、これはそれほど顕著ではありませんが、それでも事実です。 独自のエンジンを作成する場合、このような奇妙な動作をコピーしようとすることはできません。
摩擦力クリックしない場合

または

摩擦力(
frc )が作用します。 ゲームがコントローラーの水平ボタンから信号を受信しない各ステップで、
Xspの絶対値が
frc未満になるまで、
Xspの符号を乗算した
frcを
Xspから減算します。 この場合、
Xspはゼロに等しいだけです。
最高速度ソニックは特定の限界までしか加速できません。 ある時点で、彼は最高速度に達し、自分で加速することはできなくなります。
accを
Xspに追加した後
、コンピューターは
Xspが
topの上にあるかどうかを確認します。 超えている場合、値
topがそれに割り当てられます。
これは、ソニックが何らかの理由で高速を獲得し、それを達成できない場合(たとえば、スプリングから自分で押すことで達成した場合)、ボタンを彼の動きの方向に押すと、コンピューターは
accを追加し、
Xspが top 、および
Xspを
topに等しくします。 したがって、方向ボタンを押すことで運動量を減らすことができます。 これは欠陥です!
accを追加する前に
Xspが topより小さいかどうかをチェックすることにより、エンジンの開発中にそれを削除できます。
Xspが topよりも小さい場合のみ、コンピューターは
accを追加し、
Xspが topよりも大きいかどうかを確認します。 問題は解決しました。
実際、
Sonic CDは
スーパーピールアウト (ゲームの日本語版では
ダッシュと呼ばれる)を実行できるため、同様の修正を使用します。これにより、ステップあたり12ピクセルの速度で前方にプッシュされます。 通常の状況では、ソニックはこの方法で加速することはできませんが、急にこの速度に達すると、プレイヤーが動きの方向にボタンを押している間、彼はそれで走り続けることができます。 ボタンを離すと、摩擦力が働きます。 もう一度押されると、摩擦力は作用しなくなり、
Xspは一定のままですが、新しいジャークなしでは12に上昇できません。
Sonic CDプログラマーは、Sonicが空中にいる状況にこの修正を適用しなかったため、彼がジャークを使用し、動きの方向にボタンを押しながら棚から落ちた場合
、地面を
離れると
Xspは6に低下します。当時の速度はどれほど高かった。 これも大きな欠陥です。
動きと摩擦を正確にエミュレートする擬似コードは次のとおりです。
if ( "") { if (xsp > 0) { xsp -= dec; } else (if xsp > -top) { xsp = xsp-acc; } } else if ( "") { if (xsp < 0) { xsp += dec; } else if (xsp < top) { xsp = xsp+acc; } } else xsp = xsp-minimum(absolute(xsp), frc)*sign(xsp);
アニメーションの原理実行中のアニメーションSonic CDを考慮すると、Sonicには3つの異なる実行中のアニメーションがあります。
Xspがゼロの場合にのみ立って描かれます。 他の
Xspがある場合、歩行アニメーションに入ります。このアニメーションでは、フレームの変化は地上での動きの速度に依存します。
Xspが6(またはそれ以上)になるとすぐに、脚が「回転」するアニメーションが実行されます。
Xspが10以上の場合、脚の動きが「図8」の形でジャークアニメーションになります。 ジャークアニメーションは
ソニックCDのみです。
歩く
ランニング
ジャーク制動アニメーションソニックは、
Xspの絶対値が4.5以上の場合にのみ、旋回時にブレーキアニメーションに入ります。
Sonic 1および
Sonic CDでは 、
Xspがゼロに達するか符号が変わるまでブレーキアニメーションモードのままです。 他の3つのゲームでは、ブレーキアニメーションのすべてのフレームを再生した後、ソニックは歩行アニメーションモードに戻ります。
制動異なるキャラクターの物理学の違いすべてのキャラクター-
ソニック 、
テイル 、
ナックル (ソニック、テイル、ナックル)-加速、減速、最高速度、ランニング、ブレーキングの値は同じです。 特別な動きとスプライト(およびナックルが他の2つよりも低くジャンプするという厄介な事実)を除いて、それらは同じ方法で処理されます。