比例航法というのはその名の通り、航路決定に比例式を用いた誘導方式です。つまり、ある値に一定の比例定数をかけた方向に指向するような方式になります。
ミサイルが知っているべき情報、つまりミサイルのクラスや構造体が持つべき情報はあまり多くありません。通常、特に凝ったことをしない限り次のものだけで十分です。
ミサイル自身の向きとプレーヤの角度、と言うのが分かりにくい点ですが、これはミサイル自体の進行方向からどれぐらいずれた向きにプレーヤが存在するか、とう事を示しています。すなわち、ミサイルが行きたい方向と現在向かっている方向の差になります。
また、実際には角度θは直交座標系から計算しますので、プレーヤの座標(xp, yp)も知る必要がありますが、これは保存する必要がないため、リアルタイムで利用できる物とします。
最初に述べたとおり、比例航法はその名の通り比例式を用いた誘導を行います。通常、命中を期する場合はミサイル自身の向きとプレーヤとの角度の変化量の定数倍だけ旋回するような式を使います。(旋回角度λ = 比例定数n × 角度変化dθ)という式ですが、勿論このまま適用するだけでは不十分です。
すでにお気づきの方もいると思いますが、上の式をそのまま適用するととんでもなく凶悪な誘導弾になってしまいます。というのも、この式をそのまま使うと極端な話、その場で90度旋回さえ可能になってしまうため、プレーヤの最大移動速度<ミサイルの移動速度となった場合は逃れるすべがありません。
これでは全くゲームになりませんし、リアルでもありません。ではどうするかというと、旋回率を制限してしまうのが最も簡単です。つまり、求められた旋回角度λが一定の値λmax以上であればλmaxに切りそろえる方法で実装すると、ミサイルはある一定の半径より小さく回ることが出来なくなります。
制約はこれだけではありません。このままでは永遠にプレーヤめがけて飛び回る物騒な最終兵器であることに変わりありません。そこで、今度は誘導に制約を与えることを考えます。まずは実際のミサイルに習って、ミサイルが誘導可能な前方の範囲を限定することにします。ミサイル自身の向きとプレーヤとの角度が一定値dθmax以上、つまりミサイルの進行方向から横方向に離れた角度がdθmaxより大きくなったらロックを解除することにしましょう。こうすることで、ミサイルを振り切ることが出来るようになります。
以上の点を踏まえて、比例航法誘導ミサイルの実装を考えてみます。
比例航法の有無に関わらず、多くの場合一秒間に数十回の計算と描画を繰り返すことでSTGは成立しますが、比例航法の場合はこのループ数回分あたりの角度変化量を用いるのが適当です。フレームレート可変の場合は移動量の補正値と同じ値を比例定数にかけるのを忘れないでください。
また、微分値をとるループ数によってプレーヤの動きへの反応性が変化する事になります。この平均をとる間隔はおよそ0.1秒分ほどが適当な様です。
基本的に、比例航法の計算は全て極座標形式で行います。これはミサイルの基本的運動が回転である事に由来します。ですが、実際の描画や値の保持はXY直行座標系になるので、毎回変換が必要になります。まず、この直交座標と極座標の相互変換について説明します。

自機とプレーヤのなす角度を求めます。プレーヤの座標は二次元ベクトル(xp, yp)で与えられているので、これとミサイルの座標のベクトル(xm, ym)の差を(dx, dy)としてとります。この値はミサイルの座標を原点として、プレーヤへのベクトルを斜辺とした直角三角形の二辺になります。ですので、atan関数を用いて(1, 0)ベクトルとの角度を取得できます。これがミサイル自身からプレーヤへの絶対角なので、これからミサイル自身の向いている角度を引くと求めるべきθ'が得られます。
プレーヤとの角度θ'が得られたら、とりあえず次は数ループ前の値θとの差を取ります。これがdθになります。dθが得られたら、まずはdθmaxより小さいことを確かめます。もしdθmaxより大きかったらその場で誘導を停止します。再びdθmax未満になった場合再誘導するかどうかはゲームのデザイニングに関わることなのでここでは特に扱いません。
そして、晴れて誘導可能であると判明したら、実際の誘導段階、つまり旋回量の計算に入ります。このミサイルは比例航法ですので、dθに定数nをかけてλを求めることになりますが、この値はどの程度が適当かは状況によりますが、おおよそ3-5程度が適当なようです。また、先ほど述べたように、λmax以上にならないように制限を忘れないでください。
dθが決定したら、あとはこれを適用して直交座標系での位置を求めます。ミサイルの向きrにλを加算し、移動後の座標(xm',ym')=(s・cos(r)+xm, -s・sin(r)+ym)として求めます。これは、移動量を極座標系から直交座標系へ変換して加算している式になります。
座標と角度が求められればあとはそれを元にして描画するだけです。あとはひたすらこれの繰り返しになります。