基本的なことですが、基本である故に重要でもあります。
自分の攻撃が相手に当たった時どうなるか、といった情報はHIT_INFOという構造体に記述します。 この情報は攻撃ポイント設定()関数が実行されたサイクル内でのみ有効となります。 また、同時に最多ヒット数が1以上でなければなりません。
構造体とは、複数のデータをまとめて扱えるようにしたものです。 配列と似た性質も持っていますが、異なる種類の変数をまとめて扱うことが出来るという点が、 決定的に違うところです。配列を関数の引き数や戻り値にすることは出来ませんが、構造体では両方とも可能です。 このようにかなり優遇されているといえるでしょう。
構造体についての詳しい解説は専門書に譲って ヒット情報を記述するHIT_INFO構造体について解説していきます。
DEVELOP\INCLUDEディレクトリにTYPE.Hというインクルードファイルが存在します。 これをエディタなどで読み込んでみると、構造体の宣言が行なわれているのがわかると思います。
これがヒット情報構造体HIT_INFO定義部分です。それぞれのメンバについて解説していきましょう。
/*.......... ヒット情報 ..........*/ typedef struct { short dm; short df; short py; short bu; short st; short pt; short pcm; short act; } HIT_INFO;
まず、最初のメンバdmです。これは基本ダメージ値を表しています。 状況によって若干の修正が加えられますが、 この数値の分だけ、相手にダメージを与えることが出来ます。 体力の最大値は88ですから、この数値を89以上にすれば即死攻撃になります。
次のメンバdfは削りダメージです。ガードした時に与えるダメージです。 基本ダメージと削りダメージが独立しているので、「削りの方が減る」攻撃も可能です。
pyはピヨり、即ち気絶ダメージです。ピヨりカウンタは隠しパラメータとして存在しており、 気絶ダメージの合計が40以上になると気絶するようです。詳細は不明ですが 気絶の判定は攻撃をくらう、あるいはガードした時に行なわれます。 普通、攻撃をガードすれば、気絶ダメージを受けないのですが、 この時にピヨりカウンタが40以上の場合は気絶してしまいます。
たまにガードしただけでピヨることがありますが、 これはピヨりカウンタが40以上だが気絶していない時におこります。
buは燃焼サイクル数です。攻撃が当たった場合、この数値のサイクルだけ燃焼します。 普通、くらい動作では燃焼を終わらせる処理が行なわれるので、燃焼させるなら255、 そうでないなら0、という指定で問題ないでしょう。
stはヒットストップ時間を設定します。一般の格闘ゲームでは、 攻撃をヒットさせたりガードさせたりすると、当たった瞬間両者とも硬直します。 この時の硬直をヒットストップと呼びます。
ただし、飛び道具はストップしません。ヒットストップを利用して飛び道具をかわす といったテクニックも可能になるわけです。 たとえば、ダルシムのしゃがみ中パンチで飛び道具をくぐろうとした場合、 パンチが相手に届けばかわせますが、空振りではかわすことは出来ません。
また、ヒットストップ中にも必殺技コマンド入力チェックが行なわれるので ヒットストップが長いほど、キャンセルをかけやすくなります。
ptはガード位置です。ここに指定出来るのは「上」「中」「下」の3種類です。「上」 を指定すると、立ちガードでなければ防げない攻撃。「中」は立ち・しゃがみガードどちらでも防げる攻撃。 「下」で、しゃがみガードでしか防げない攻撃、になります。
VF系のゲームでは、しゃがみガード不可技を「中段技」と言いますが、 ガード位置指定では違うので注意しましょう。
CPUはガード位置を、HIT_INFOのこのメンバから判断するのではなく、 相手キャラのしゃがみ状態とY座標から判断します。 よって、下段技を出す場合は必ずしゃがみ状態をONにしましょう。
pcmは攻撃がヒットした時に再生するPCM番号を指定します。 ガードされた時は、この指定は無視され、システム規定のガードPCMが再生されます。
actは攻撃がヒットした場合の相手のくらい動作IDを指定します。 ここに、存在しないIDを指定をするとハングアップしますから注意しましょう。 また、くらい動作以外のIDを指定するのも危険ですからやめましょう。
ヒットストップ時間について少しくわしく解説します。 この数値を小さくしすぎると当たったという手応えが少なくなります。 つまり、当たったかどうかがわかりづらくなり、プレイヤーにとっても、現状の把握が難しくなります。
必殺技によるキャンセルはヒットストップ中に受け付けるため、キャンセルをかけることも難しくなります。
ようするに、あまりいい事はありません。
意図的にヒットストップを短くする場合も考えられます。 これは複数回ヒットすることが決まりきっている技などです。 例えば、乱舞技であるとか、複数回ヒットする飛び道具です。 こういった技の場合いちいちヒットストップさせると鬱陶しいだけです。 やられる側も、ヒットが強調されるので不快感が高まるでしょう。
逆にヒットストップを大きくしすぎると、ストップ時間が長すぎてゲームのテンポを崩すことになります。 が、技によっては故意に大きくした方がよい場合もあります。 一撃必殺の大技のようにガードされた時のリスクを大きくしたい場合です。 ヒットストップが長ければ、それだけ現状把握がしやすいため、反撃もしやすくなります。
では、標準的なヒットストップ時間はどれくらいか、ということになりますが、 通常の技の場合10〜20あたりが妥当なようです。
が、技の性質やキャラの特徴などによって左右されます。 色々なキャラを参考にしてみてください。
うげっ、もう終わり?