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
■ テスト時のチェック項目
■ 解説用データ ダウンロード
012
当て身投げの作り方
格闘ゲームには様々な特徴を持った技がありますが、
今回は、その中から「当て身投げ」について説明しようと思います。
まずは、当て身投げの定義から確認しておきます。
当て身投げ:
相手の攻撃を受けることで発動するカウンターのような投げ技。
ゲームによって多少差異はあるかもしれませんが、
だいたいこのような定義になるかと思います。
ゲーム上での処理の流れ
実際のゲーム上では、
だいたい 以下のような流れに沿って当て身投げの処理が行われます。
コマンドを入力すると、自キャラが特殊な構えを取ります。
※下の例では、左側が自キャラとなっています
この構えをしている間に相手キャラの攻撃を受けると…
攻撃してきた相手を捕らえて…
投げ飛ばします。
なお、多くの技がそうであるように
この技も構えを解いたあたりに硬直時間( 隙 )があります。
大まかな仕組み
格闘ツクール上では、以下のような方法でこの処理を表現することができます。
コマンドを入力すると、自キャラが特殊な構えを取ります。
この時、自キャラの一部に攻撃力0の攻撃判定が発生します。
( やられ判定はそのままであることに注意 )
自キャラが構えている間に敵の攻撃を受けた場合…
自キャラの攻撃判定と相手キャラの攻撃判定が相殺します。
ここで、「相殺したら」の条件分岐が発動して…
当て身投げの動作に入ります。
通常の投げと同じように、「投げつかみ」の攻撃判定を発生させます。
前回の攻撃判定が、相手の攻撃をチェックするものであったのに対して、
今回の攻撃判定は、相手が自身の近くにいるかどうかを確認する判定になります。
なお、相手が近くにいることがわかっている場合は
ここを飛ばして そのまま投げ技のモーションに入っても問題ありません。
「投げつかみ」の攻撃判定が相手にヒットしたら、
後は通常の投げ技同様に技のモーションに入ります。
なお、構え中に相手が攻撃をしてこなかった場合、
自キャラは隙のある立ちモーションに移行することになります。
以下に、
当て身投げ成立に至るまでの流れを 簡単なフローチャートとしてまとめておきます。
※遠距離からの攻撃は、後述する属性分けで当て身できない扱いにしておくと良いかもしれません
MEMO
「相殺」のON/OFF
「ゲームシステム」-「基本」には「相殺」のチェックボックスがあります。
上記の処理では攻撃の相殺を利用していますが、
「相殺」のチェックボックスはOFFのままでも問題ないようです。
作成するゲームのルール( 相殺の有無 )を優先して、自由に設定してください。
また、ページ下部では、
相殺を使わない当て身投げについて軽く触れます。
( 実際に試したわけではないので、確証はありませんが… )
当て身可能な範囲
ここで1つ注意すべき点があります。
これから作成する当て身投げが
「どのような攻撃を受け流し、投げ飛ばせるのか?」です。
先述した通り、ここでは
「攻撃判定の相殺」を使って当て身の発動を判定するので
「自キャラにどのような攻撃判定を発生させるのか?」によって
当て身可能な範囲( 性能 )をある程度コントロールすることができます。
相手キャラの攻撃として予想できるものを以下に列挙します。
1 上段攻撃 地面に立っている状態で、キャラの頭部あたりを狙う攻撃 |
|
2 中段攻撃 地面に立っている状態で、キャラの腹部あたりを狙う攻撃 ( 格闘ゲーム用語で言うところの中段攻撃とは異なります ) |
|
3 下段攻撃 地上にいる状態で、キャラの足元を狙う攻撃 主に、キャラがしゃがんだ状態で行う攻撃 |
|
4 空中攻撃 キャラが空中にいる状態で行う攻撃( いわゆるジャンプ攻撃 ) 必殺技による空中攻撃も含む |
|
5 投げつかみ コマンド入力などによって発生する投げ判定用の攻撃 |
|
6 遠距離攻撃 相手キャラが発射する飛び道具、攻撃範囲が大きい武器攻撃など 自キャラがつかめる範囲外からの攻撃 |
一覧の中では、5と6の扱いが厄介です。
格闘ツクールの攻撃判定には、
「それが通常の攻撃なのか、飛び道具による攻撃なのか?」
と言った情報が含まれていません。
そのため… 1〜4と 5〜6を別扱いするには、それ専用に
特殊な仕組みを全キャラについて用意する必要があります。
このあたりについては、「攻撃の属性分け」としてページ一番下で補足的に説明します。
MEMO
特殊な攻撃
特殊な技を使うキャラのために他のキャラが合わせてあげる…
という作業は格闘ゲームを作る上で何度も使うことになると思います。
( 特に、相手キャラの状態に作用するような投げ技など )
少々面倒ですが…
どのキャラも、知らない攻撃のリアクションは取れない
ということで地道に設定してください。
スクリプト説明
前説明が長くなりましたが、実際のスクリプト構成について説明していきます。
以下は、今回のテストで使うキャラクター画像になります。
※ゲーム用BMPは画像のリンク先にて提供しております
スクリプト構成
番号 | 命令 | 設定内容 |
1 | カウンターヒット用にダメージ率を高めにしておくと良いです | |
2 | 構えをとる前の状態 | |
3 | 相殺したら9へ | |
4 | 攻撃力は0で、キャラの上半身あたりに設定 | |
5 | 当て身の構え( ここのWAIT値が当て身の受付時間となります ) | |
6 | 攻撃判定の解除( ここから先は技の後の隙となります ) | |
7 | グラフィックは2と同じ、構えを解いた状態です( WAITは5より長めに ) | |
8 | 9以降の処理と区切るため、ここで終了( 当て身が不発だった場合 ) | |
9 | 当て身投げの動作が邪魔されないよう、一旦キャラを無敵にします | |
10 | 攻撃が当ったら、「当て身投げ( 投げ動作 」スクリプトへ移動します | |
11 | 攻撃力・攻撃範囲は4と同じで、連続ヒットのチェックをONにします | |
12 | 画像は5と同じです | |
13 | キャラの防御枠を元に戻しておきます( 当て身投げのつかみに失敗 ) | |
14 | キャラの攻撃枠も解除しておきます | |
15 | グラフィックは2と同じです( WAIT値は5の画像よりも大きめに ) | |
16 | 攻撃は受けたが、相手が近くにいなかった…という失敗パターン |
※なお、ここでは当て身投げの投げ動作部分についての説明は省略します
全体的な流れとしては、
前半( ピンク色の部分 )が 相手の攻撃の有無を判定する処理、
後半( 水色の部分 )が 相手が自キャラの近くにいるかを判定する処理になります。
前者の判定が成立すると後者の判定へ、そこでも判定が成立すると
投げ動作の処理に入る…というスクリプトになっています。
11の攻撃枠で「連続ヒット」のチェックを入れているのは、
4の攻撃枠と合わせて、この攻撃枠が2ヒット目という扱いになるためです。
当て身投げ可能なエリアを図で示すと、以下のようになります。
上半身は攻撃枠で覆われているため…
相手がここを攻撃した場合は、当て身投げが成立します。
一方、キャラの足元には攻撃枠がなく、やられ判定のみが設定されています。
相手キャラに下段攻撃を出された場合は
当て身投げに失敗してダメージを受けることになります。
当て身投げの構えグラフィックは
その当て身範囲がある程度予想できるものにしておくと
ゲーム的にわかりやすくなるでしょう。
このあたりは、見た目( かっこよさ )との兼ね合いになるかと思います。
スクリプトの設定が済んだら、
「キャラクター」-「コマンド」にて当て身投げのコマンド設定を行ってください。
処理の確認
実際にテストプレーを行い、当て身投げの動作を確認してみます。
( 当て身投げの判定部分以外は、通常の投げ動作とほとんど同じです )
コマンドを入力すると、キャラが構えをとります。
この状態で、相手が自キャラを攻撃すると…
両者、一定時間停止した後に自キャラが相手を捕らえて…
( 一時停止には、 「プレーヤー:ストップ」 命令を使っています )
勢いをつけて…
放り投げます。
当て身投げの処理が正しく行われていることが確認できました。
攻撃の属性分け
話が長くなるので、今回は大雑把な仕組みだけ説明しておきます。
なお、先に当て身投げの仕組みを一通り完成させてから
この処理を組み込むことを強くお勧めします。
以下のイメージ図を見てください。
判定枠の位置ずらしによる擬似的な属性分け( イメージ図 )
左端から見ていきます。
まず、攻撃を受ける側ですがキャラの防御枠が3つあることに注目してください。
( 防御枠の管理番号をうまく使ってください )
ここでは…
1番上が通常攻撃用の防御枠、
2番目が投げつかみ用の防御枠、
3番目が飛び道具用の防御枠
となっています。
1つ右を見ると、キャラが攻撃しており攻撃判定が発生しています。
判定枠の位置はキャラの位置と同じ高さとなっています。
次の例を見てください。
キャラが投げつかみの動作を行っています。
ここで判定枠を見ると、つかみの判定枠は、キャラのずっと下にあります。
この攻撃枠の高さ位置が、
先述した投げつかみ用の防御枠の位置に対応している
ことを確認してください。
右端の例は、飛び道具です。
投げつかみ同様、見た目に反して攻撃判定はずっと下にあります。
これは飛び道具用の防御枠に対応した位置に設定されています。
当て身投げ用に攻撃判定を発生させる際も
これら攻撃の属性に合わせて枠設定を行うことで
当て身可能な攻撃を指定することが出来ます。
例えば…
当て身の攻撃判定枠がキャラと同じ高さにのみ発生している場合、
投げつかみや飛び道具攻撃に対しては無防備になります。
このように、
防御枠や攻撃枠の位置を意図的にずらすことで
擬似的な攻撃の属性分けを表現することができます。
ちなみに、判定の位置ずらしを行う際は
通常の位置で枠を設定した後に、Y座標を+2000など一定量変化させると良いです。
また、飛び道具などでヒットマークを表示する場合は、
飛び道具の消滅処理( ヒット/ガードを条件として発生 )などで
直接ヒットエフェクトを発生させると良いです。
※通常のヒットマークは、当り判定の位置に発生、表示が画面外になってしまうので注意してください。
今回は通常攻撃/投げつかみ/飛び道具という分け方でしたが、
ゲームによっては炎属性攻撃は無効などのように
凝った設定を組むことができるかもしれません。
( その分、スクリプトが複雑になりますが )
※以下の説明は思いつきで書いたもので、正しく動くという確証はまだありません。
1つのアイデアとして、ゲーム製作時の参考にしてください。
MEMO
当て身投げを表現する別の方法
何らかの理由で「攻撃の相殺」を使いたくない場合は、
やられの動作に処理を加えることで当て身投げを表現します。
( 各種やられの処理を一時的に投げ技の動作に置き換えます )
処理の流れ
コマンドを入力すると、キャラが構えをとる。
ここで防御枠のダメージ率は0にしておきます。
もうひとつ、キャラの状態記録用に変数を変化させます。
( 例えば、キャラ変数Aを1にするなど )
また、当て身投げの構えを解いたあたりで
変数の値を元に戻しておきます。
各種やられのりアクション側では、
変数の値による分岐を設定しておきます。
キャラ変数Aが1であった場合は、
通常のやられモーションを中止して
当て身投げのつかみモーションに移行します。
どのような攻撃を当て身で返せるかは、
各種攻撃に対応したやられリアクションに
先述した変数分岐をつけるかどうかで設定します。
以上で、「当て身投げ」の作り方に関する説明を終えます。
何かご不明な点や質問などありましたら、遠慮なく掲示板で聞いてください。