001 はじめに
002 ゲーム作成
003 各種メニュー確認
004 「キャラクター」作成
005 「ステージ」作成
006 「デモ」作成
007 「テストプレー」
008 「ステージ」編集
009 「キャラクター」編集
010 パレット管理
011 アニメーション
012 「座標移動」
013 重力の設定
014 その他スクリプト
015 「リアクション」
016 ヒットエフェクト
017 スクリプトの並べ方
018 攻撃動作
019 「コマンド入力」
020 攻撃判定
021 やられ判定
022 やられ動作の設定
023 「タイトル画面」作成
024 タイトルカーソルの表示
025 「キャラクターセレクト」
026 各種インターフェイス
027 ラウンド関連の表示
028 CPUの動作指定
029 「ストーリー」の作成
030 ヒット数の表示
031 投げ技の作成
032 ゲージ消費技の作成
033 ステージの組み方
034 デモシーンの組み方
035 格闘ツクールの仕様
■ コマンド解説
001 画像呼出
002 座標移動
003 防御枠
004 攻撃枠
005 リアクション
006 サウンド
007 キャンセル条件
008 色変更
009 オブジェクト発生
010 変数による分岐
011 条件分岐:技中有効
012 条件分岐:基本分岐
013 条件分岐:ランダム分岐
014 条件分岐:コマンド入力
015 スクリプト移動: 移動
016 スクリプト移動: 呼出
017 スクリプト移動: ループ
018 座標・画像変更
019 スクリプト変更
020 スペシャルゲージチェック分岐
021 ライフゲージチェック分岐
022 ゲージ変更
023 パレットアニメ・揺らし
024 停止
025 残像
026 終了
■ テクニック解説
002 画面レイアウト
003 カラーセレクトの設定
004 ヒットエフェクトの研究
005 ヒットエフェクトの描き方
006 スクリプト一覧のテキスト化
007 通常立ちの設定
008 VSで開始位置指定
009 雛型キャラの作成
010 INIファイルの内容
011 変数の大小チェック
012 当て身投げの作り方
013 必殺技コマンドの設定
014 アニメ作成_通常攻撃
015 ゲームモードによる分岐
016 変数の一覧を記録
017 受け身入力の判定
018 ダウン値による分岐処理
019 飛び道具の作成
020 ワープ技の作成
021 ヒット硬直のコントロール
022 ステージの地面表現
023 ヒット数表示の固定
024 横方向のホーミング攻撃
025 1P/2Pの判別
026 ライフ減少アニメ
027 画面下部の表示内容
028 ステータス表示の意味
029 ガードクラッシュの表現
030 押せないOBJ
031 アイテムのあるゲーム
032 復活する技の作成
033 空ガードの作成
034 ステージ選択付きキャラセレ
035 ゲージMAXの表示
036 固定ダメージを表現する
037 ラン動作の作成
038 投げ技によるKOの作成
039 ボタン溜め押し技の作成
040 中段攻撃の作り方
041 製作に役立つツール
042 カラーセレクトに適した画像
043 相手によって動作変更
044 横幅のあるキャラを表現
045 ラウンド限定の動作
046 影色の塗りを効率化
047 モードを切り替えるキャラ
048 当たり判定設定のコツ
049 空中ジャンプを表現する
050 キャラの向きを判別する
051 途中でKOしない乱舞技
052 カウンターヒットの作成
053 OBJの動作を停止
054 ハイジャンプの作成
■ バグ・よくあるミス
Q_A よくあるミスQ&A
001 消せない画像
002 リスト選択とキーボード操作
003 アニメプレビューで落ちる
004 起動直後に落ちる
005 OBJ発生位置がずれる
006 着地すると技終了
007 画面端でのヒットバック1
008 グラデーションが汚い
009 画面端でのヒットバック2
010 境界のアンチエイリアス問題
011 ガードされてもキャンセル可能
012 プレーヤーの読込に失敗
013 謎の残像が発生する
014 コマンドが左右反転する
015 パレット管理でよくあるミス
016 下溜め技が失敗する
017 パレットウィンドウで落ちる
018 コンボが途切れない
019 やられ中にしゃがみ可能
020 ソフトのバージョン表記
021 空中でコマンド左右反転2
022 左右押しでガード前進
023 真空投げが発生する
024 空中でコマンド左右反転3
■ テスト時のチェック項目
■ 解説用データ ダウンロード
052
カウンターヒットの作成
対戦格闘ゲームを遊ぶ上で欠かせないのがカウンターヒットの要素です。
カウンターヒット
硬直時間が少し長めで追撃がしやすいなど、
通常のヒットよりも攻撃側に有利な状況が発生します。
無闇に攻撃を出すと手痛い反撃を受ける、という意味で
ゲーム内の対戦バランスを考える上で重要な要素と言えます。
このページではカウンターヒットの作り方について説明したいと思います。
作成する内容の確認
まずは今回作成する処理の内容を確認しておきます。
ゲーム開始、自キャラが何もせず立っている状態で相手の攻撃を受けます。
画面右側、自キャラは通常のやられ動作に入ります。
次に自キャラが攻撃を出している状態を考えます。
ここでは、硬直時間の長い飛び道具を出している状態で攻撃を受けてみます。
自キャラはカウンターヒット用の特殊やられに入ります。
通常のやられと違って硬直時間が長めになっています。
処理の考え方
実際に処理を組み始める前に、まずはカウンターヒット発生の流れから見ていきます。
1.自キャラが攻撃動作を行う
2.相手はその攻撃を回避する
3.自キャラに攻撃後の隙が発生する
4.相手の攻撃が自キャラにヒットする
5.自キャラはまだ攻撃動作が終わっていなかったので、カウンターヒット扱いになる
6.カウンターヒットなので、通常時とは別のやられ動作に入る
キャラのやられをカウンターやられに変えるには、
「自キャラが攻撃を行っている」という状態を変数に記録しておき、
キャラが攻撃を受けた際にその変数値を基準としてカウンターやられに分岐させます。
処理の仕組み
上記の流れを変数を使って組むと以下のような感じになります。
自キャラの攻撃開始時、変数「攻撃中」をON(1)にする。
└変数代入は各種攻撃動作のスクリプト先頭で行います
自キャラの攻撃終了時、変数「攻撃中」をOFF(0)にする。
└変数代入は通常立ちなど待機ポーズの先頭で行います
各種やられ動作先頭に分岐処理を追加、変数「攻撃中」がON(1)なら
専用の「カウンターヒット版やられ動作」に移行します。
カウンターヒットへの分岐処理
イメージとしては上図のような感じになります。
ここでは、やられ動作スクリプトと飛び道具スクリプトを例として
カウンターヒットの処理を作成したいと思います。
------------------------------------------------------------
グラフィック素材
以下は今回の処理で使用するキャラグラフィックになります。
飛び道具攻撃 (BMPファイルはリンク先にて提供)
通常やられ(弱ヒット立ちA)
カウンターやられ(強ヒット立ちA)
通常立ち
※上記画像はPNG形式となっております。
ゲーム内に読み込む際はBMP形式に変換してお使いください。
------------------------------------------------------------
状態記録用の変数を決める
上でも説明した通り、処理を組む上でキャラ変数を1つ使用します。
スクリプト編集に入る前に使用する変数の番号を決めておいてください。
なお、ここではキャラ変数Pをカウンターヒット判定用変数とします。
------------------------------------------------------------
飛び道具
番号 | 命令 | 設定内容 |
1 | キャラ変数Pに 1 を代入 | |
2 | キャンセル不可 | |
3 | やられ・ぶつかりをONに | |
4 | やられをONに | |
5〜9 | 飛び道具攻撃のモーション | |
10 | 「飛び道具OBJ」 を発生させる | |
11〜 | 飛び道具攻撃のモーション |
スクリプトの先頭でキャラ変数Pに 1 を代入している点に注目してください。
これにより、「キャラが攻撃中である」ことが変数に記録されます。
なお、このスクリプト行内では変数値のリセットを行いません。
( あくまで技動作が一通り終わったタイミングを技の終了とするため )
ここで飛び道具による隙・硬直時間を長くしておくと
後述するテストプレーでのカウンター発生が確認しやすくなります。
※あくまで確認用の設定なので、後で元に戻しておくのを忘れないように!
------------------------------------------------------------
通常のやられ動作
番号 | 命令 | 設定内容 |
1 | キャラ変数P= 1 なら「カウンター弱ヒット立ち」へ | |
2 | やられ・ぶつかりをONに | |
3 | やられをONに | |
4 | 移動X -1.10、 重力X +0.01 | |
5 | WAIT = 5 | |
6 | 自分停止時間 = 2、 相手停止時間 = 1 | |
7 | WAIT = 13 | |
8 | 移動・重力を全て0に | |
9 | WAIT = 4 | |
10 | WAIT = 3 | |
11 | WAIT = 2 | |
12 | 終了 |
スクリプト先頭にて先のキャラ変数P
をチェック、
値が 1 の場合はカウンター弱ヒット立ちに処理を移行します。
また、ここでは通常版のやられとカウンターヒットで
硬直時間に差を出すために停止命令を入れています。
------------------------------------------------------------
カウンターやられ動作
番号 | 命令 | 設定内容 |
1 | やられ・ぶつかりをONに | |
2 | やられをONに | |
3 | 移動X -1.83、 重力X +0.01 | |
4 | WAIT = 5 | |
5 | 自分停止時間 = 5、 相手停止時間 = 2 | |
6 | WAIT = 2 | |
7 | WAIT = 6 | |
8 | WAIT = 6 | |
9 | 移動・重力を全て0に | |
10 | WAIT = 6 | |
11 | WAIT = 5 | |
12 | WAIT = 5 | |
13 | WAIT = 5 | |
14 | 終了 |
基本的なスクリプト構成は通常版のやられをコピーしたものでOKです。
5ブロック目に見られるとおり、停止命令での停止時間を長くするなど
攻撃を受けた側がより不利になるよう調整しておくと良いです。
必要というわけではありませんが、ここで見分けの付きやすいグラフィックに変更しておくと
後でテストする際にカウンターヒットの発生を確認しやすくなります。
なお、特殊なカウンターヒットを1ヒット目のみに限定する場合は
このスクリプト行先頭でキャラ変数に 0 を代入、リセットしておきます。
例ではカウンターヒットを1回の攻撃に限定しないので
ここでは変数値はそのままにしておきます。
------------------------------------------------------------
通常立ち
番号 | 命令 | 設定内容 |
1 | キャラ変数Pに 0 を代入 | |
2 | やられ・ぶつかりをONに | |
3 | やられをONに | |
4〜13 | 通常立ちのモーション | |
14 | 終了 |
通常立ちスクリプトの先頭でキャラ変数Pに 0 を代入、リセットしています。
これによりカウンターヒット発生の条件は解除されます。
ヒット数カウントの解説ページ でも少し触れましたが、格闘ツクールでは
連続ヒットの終了を キャラが待機モーションに入ったかどうか
で判定しています。
そのため、今回の処理ではカウンター状態の解除を
待機モーションである通常立ち
にて行っています。
テストプレーで処理を確認
スクリプトの編集が済んだら再びテストプレーを実行、
カウンターヒット
の処理を確認してみましょう。
飛び道具発動中に攻撃を受けてカウンターヒットが発生しました。
通常やられとの硬直時間の差をチェックして丁度良いゲームバランスになるよう調節します。
自キャラが通常立ちに戻ると、
次に攻撃を受けた際はカウンターヒットではなく通常のやられ動作が発生します。
以上の動作が確認できたらテストは成功です。
同様にして飛び道具以外の攻撃動作にカウンターヒット用の変数処理を追加、
しゃがみなどの各種待機モーション、移動動作に変数のリセット処理を追加してください。
その他、待機モーション以外にもコンボが途切れるであろう
動作があれば、そこにも変数値のリセット処理を入れておきます。
補足1:ヒットエフェクトの分岐
今回はキャラの動作について条件分岐を組みましたが、
同様にしてヒットエフェクトに分岐を入れることも可能です。
以下はその例です。
通常のヒットエフェクト行の先頭にて
カウンターヒットエフェクトへの変数分岐をセットしています。
通常のヒットエフェクトよりも若干派手なグラフィックを用意しておけば
視覚的にもカウンターヒットであることがわかりやすくなり
ゲームにより緊張感と爽快感を持たせることが出来るでしょう。
------------------------------------------------------------
補足2:カウンターヒットのメッセージ表示
ゲームによってはカウンターヒット発生時、
画面上にヒット数同様にメッセージを表示することがあります。
このメッセージ表示についても今回の処理に組み込むことが出来ます。
メッセージを左右どちらに表示するか?
大抵の場合、カウンターヒット発生時は攻撃側のボーナスとして表示されることが多いです。
例えば、上記画像の場合は2Pが1Pに対してカウンターヒットさせているので
「カウンターヒット!」
のメッセージも2P側に表示しています。
この仕組みを動かすためには、変数で1P/2Pを判別しておく必要があります。
→ 変数を使った1P/2Pの判別処理の組み方
以下はスクリプトの例です。
番号 | 命令 | 設定内容 |
1 | キャラ変数F= 1 なら 4 へ | |
2 | メッセージ画像、 WAIT = 80、 中心軸 +100, +220 | |
3 | 終了 | |
4 | メッセージ画像、 WAIT = 80、 中心軸 +530, +220 | |
5 | 終了 |
※ここでは、キャラ変数Fを1P/2Pの判別用に使っています。
カウンターヒットのメッセージ表示というと
ついついシステムグラフィックで表示するもの、と思いがちですが
ここではキャラのスクリプトにてメッセージ表示を出しています。
カウンターヒット行先頭にてメッセージ用OBJ
を画面座標指定で発生させ、
メッセージ用OBJ内で1P/2Pによる分岐
を用意。
自身が1Pであった場合は2P側(画面右側)にメッセージを。
自身が2Pであった場合は1P側(画面左側)にメッセージを表示します。
( 相手のボーナスメッセージを表示してあげる、という風にイメージするとわかりやすいかもしれません )
カウンターヒット用の画像素材はこちらになります。
※上記画像はPNG形式となっております。
ゲーム内に読み込む際はBMP形式に変換してお使いください。
ゲームにカウンターヒットの要素が入ると「下手に攻撃を振るとリスクになるか?」
など攻防の駆け引きにもより深みが出て来ると思います。
今回説明したテクニックを理解して、ぜひゲームに組み込んでみてください。
以上、長くなりましたがカウンターヒットの作成に関する説明を終えます。
なお、今回説明した内容について気になる点や疑問点などがあれば
掲示板 にて質問を受け付けておりますので気軽にお尋ねください。