この節においては、基本的に無単位量で数値を扱う。厳密にポリゴンがどの位置に植わっているかはプレイヤーに判別出来ない為である。
ポリゴンゲーム全般について言えることだが、ゲーム中のデータは3次元空間内のものとして定義されているにもかかわらず、モニター表示はそれを特定の視点からの射影によって2次元で表示している。「電車でGO!」では、視点は運転席(厳密には電車の中央)に、射影面は進行方向を法線に持つ平面に設定されている。簡単のため、ここでは残り距離の基準となる位置を視点と考える。また、射影面と視点との距離を1とおく。視点を通り進行方向に平行な直線を視点軸と呼ぶことにする。
今、0cm地点よりaだけ先に、視点軸から距離bだけ離れて置かれている目標を考える。この目標の画面上での表示位置(画面中央からの距離)yは、距離h(基準地点手前を負とする)の関数として
y=b/(−h+a) ←(式1)
で与えられる。よって、0cm地点での表示位置はh=0を代入してb/aである。また、0cm地点での単位距離あたりの移動量は、yをhで微分してh=0を代入し、b/a^2である。即ち、表示位置をさらにaで割ったものである。このことから、停止目標は、画面中央から出来る限り離れていて、さらに出来る限り0cm地点に近い物が望ましいことが分かる。
停止目標として、aが0に近いものを選んだとする。(式1)をhで微分すると、b/(−h+a)^2となるので、0cm地点に接近するに従い、停止目標は急速に画面外側へ逃げていく。適切な(aが0に近い)目標ほど、速度変化が激しいので、停車する際には、このことを充分に注意する必要がある。しかし、このことは同時に、適切な目標の移動速度を最後まで小さく保つことが出来れば、0cm寸前で超微速という望ましい状態に持ち込めることを意味している。ブレーキをかけなければxは一定の割合で0に近づくので、移動速度は急速に大きくなってしまう。適度にブレーキをかけ続けて移動速度を大きくしないことが、0cm停車のコツである。
それでは、どの程度ブレーキをかければ理想的に0cmにアプローチできるのか、より詳しく調べることにする。一定減速度で停止位置に接近し、時刻t=0にcだけ過走して停止する状態は、
h=−kt^2+c ←(式2)
で表される。(式2)を(式1)に代入し微分する。
y=b/(kt^2+a−c) ←(式3)
dy/dt=−2kbt/((kt^2+a−c)^2)
d^2y/dt^2=2kb(3kt^2−a+c)/((kt^2+a−c)^3)
よって、一定速度減速の場合、停止目標はt=−sqr((a−c)/3k)を境に減速に転じることがわかる。このときの停止目標の位置は3b/4(a−c)である。0cm停車の場合、この位置は画面中央から目標位置までのちょうど3/4だけ進んだ地点である。当然ではあるが、この位置は減速度kによらず一定であることが重要である。
しかし、実際問題として、この3/4地点で初めて減速に転じるようなブレーキングでは0cmはおぼつかない。ブレーキ一定ならば減速度も一定に近いが、厳密には違う。また、最後にはブレーキを緩めないと、微調整がうまく出来ない。そこで、実際には3/4地点よりも若干手前から減速しだすようなブレーキングが必要となる。c=−a/2の時には、丁度1/2地点で停止目標が減速に転じる。これだと最後a/2だけ手前に停車する勘定になるので、その分をブレーキを緩めての微調整に充てれば良い。
まとめると、0cm狙いのブレーキングは以下のようになる。
参考までに、(式3)のグラフを載せておきます。赤色の筋がc=0、緑色の筋がc=−a/2です。直前にまとめたブレーキングは青色の筋のようになります。
#ここまでくると、すでに本物に近い運転からは逸脱し、単なる
#絵合わせのコツになってしまっています。まあ、スコアの為と
#いうことで、仕方ないでしょう。
##余裕時間のない駅では、この方法は難しい気がします、、、。
Last update 1998/8/13