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
■ テスト時のチェック項目
■ 解説用データ ダウンロード
038
投げ技によるKOの作成
格闘ゲームでは様々なKOパターンがありますが
2D格闘ツクールでは、どのような攻撃でとどめをさしても
「負け」スクリプトに設定したモーションが再生されます。
このページでは、投げ技によるKOを題材として
相手の攻撃に合わせたKOパターンを再生する処理
について説明したいと思います。
現状の確認
まずは、現状でどのような動きをしているかを確認しましょう。
ゲーム開始。
現時点で2P側キャラのライフが残り少しとなっています。
1Pが2Pに対して投げ技を使います。
このまま行けば、2Pは投げダウンの動作を取って負けるはずです。
ここで投げ技のダメージが発生。
2Pは通常の負けモーションに入ります。
倒れるはずのキャラが勢いよく吹き飛ぶ、動作の流れとしてはかなり不自然です。
出来れば、投げのダウンからそのまま倒れたままでKO
といった感じに変えたいところです。
スクリプト作成
実際に投げ技によるKOのスクリプトを組んでいきます。
以下は、今回の処理で使用するキャラグラフィックになります。
ダウン動作
負け
※上記画像はPNG画像となっております。
ゲームに読み込む際はBMPに変換して使ってください。
------------------------------------------------------------
負け(投げ)の作成
まずは、通常の「負け」スクリプトとは別に「負け(投げ)」というスクリプトを用意します。
これは投げ技によるKO専用の負けモーションだと考えてください。
特に難しい処理は組んでいません。
内容としては、ダウンする動作など「投げられ」の動きから
自然につながるようなキャラモーションをセットしておくと良いです。
※例では、上で載せたダウン動作のグラフィックを使用しています。
また、行のラストはループ処理またはWAIT値無限の画像を置いて
「負け(投げ)」の処理が終わらないようにしています。
( ラウンドが終了するまで負けのポーズを続けるため )
MEMO
「負け(投げ)」のモーションについて
「投げられ関連の動作」から「負け動作」へ飛ぶタイミングは
「投げる側」キャラのスクリプトにてライフゲージ変更を行った時です。
KOのタイミングが相手次第なので、
多少タイミングがずれても違和感が無いよう
よく考えてアニメーションを組んでください。
場合によっては、空中状態で「負け」スクリプトへ飛ぶ可能性もあります。
例えば…「ダウン(投げ)」で
キャラが地面に激突して宙へ少しだけ跳ねている時に
ライフが0に変更された場合など。
気になる場合は「負け(投げ)」スクリプト先頭で空中状態かどうかを判定、
空中にいる時は一旦着地させてから
メインの処理を開始するようにしてください。
------------------------------------------------------------
「負け」→「負け(投げ)」の分岐を作成
「負け」の先頭に変数分岐を用意、変数の値を条件として
「負け(投げ)」に分岐するよう処理を組みます。
※わかりやすいよう、今回処理を追加した部分に色を付けています。
ここでは、キャラ変数Cを判定用の変数として使っています。
キャラ変数C = 10 なら、「負け(投げ」nへ
------------------------------------------------------------
投げ技によるKOの判定をONにする
投げられる側で使う動作スクリプトの先頭で
「投げ技を受けている」という状態を記録します。
「ダウン(投げ)」のスクリプトに変数分岐命令を追加しました。
キャラ変数Cを判定用変数に使っているので、これを対象として代入の処理を行っています。
キャラ変数C = 10 を代入
MEMO
投げ技専用のダウン動作
このページの説明を読んでいるうちに気付くと思いますが、
投げ技によるダウンは通常のダウン動作と
別に用意しておいた方が良いです。
あらかじめ処理を別々に分けておけば、
変数処理などで混乱することも無いのでバグの発生も防ぎやすいです。
------------------------------------------------------------
投げ技によるKOの判定をOFFにする
投げ技によるKO判定をONにしたら、
今度は逆に判定をOFFにする設定を用意しておきます。
今のままだと、1度投げ技を受けた後は
KO時の負けモーションが必ず「投げ専用の負け」になってしまいます。
この問題を防ぐため、変数値のリセット処理を用意するわけです。
例えば、「ダウン(投げ)」からの「立ち上がり」モーション先頭にて
キャラ変数をリセットすると良いです。
その他、通常攻撃を受けた場合など抜けが無いように注意して
各種スクリプトに変数値のリセットを置いてください。
キャラ変数C = 0 を代入
テストプレーで処理を確認
以上で「投げによるKO」の処理が準備完了です。
テストプレーを実行して処理を確認してみましょう。
ゲーム実行時の流れを並べると、だいたい以下のような感じになります。
------------------------------------------------------------
1.自キャラが相手キャラにつかまれ、投げ技を受ける。
2.相手の投げ技スクリプト内、スクリプト変更命令によって
自キャラの動作が「ダウン(投げ)」に変更される。
3.自キャラ「ダウン(投げ)」スクリプト先頭にて変数処理。
「投げ専用負けモーション」の判定をONにする。
4.残り体力が少なかったので、
相手キャラのゲージ変更命令によって自キャラライフが0となる。
5.ライフが0になったので、
自キャラは「負け」スクリプトへ移動する。
6.自キャラ、「負け」スクリプト先頭にて変数分岐。
「投げ専用負けモーション」の判定がONなので
「負け(投げ)」スクリプトへ移動する。
7.自キャラは「負け(投げ)」スクリプトへ移動。
そこから先は、ラウンド終了処理が済むまでその行を実行し続ける。
MEMO
投げを行う側の注意点
投げ技スクリプトにおける命令の並び順に注意してください。
今回説明した処理では
「ダウン(投げ)」の後に「負け」動作に飛ぶという流れになっています。
この流れを成立させるには、投げ技を行う側のスクリプトで
以下のような順で命令を並べておく必要があります。
スクリプト変更 命令の後で
ゲージ変更 命令を実行している点に注目してください。
これがもし逆の並び順だと、
投げられた側は「ダウン(投げ)」の処理に入る前に
残りライフ=0の条件を満たして「負け」モーションに入ってしまいます。
投げられ側ではなく投げる側のスクリプトなので
問題に気付きにくいかもしれませんが、
色々準備してから最後に「負け」モーションに入る
という流れを意識してスクリプトを組むようにしてください。
今回は変数による分岐を使って投げ技によるKOを表現しましたが、
このテクニックを応用すれば様々なKOパターンを表現することが出来ます。
色々試して見た目に楽しいゲームを実現してください。
以上、かなり長くなりましたが 投げ技によるKO についての説明を終えます。
なお、今回説明した内容について何か気になる点・疑問点などあれば
掲示板 にて質問を受け付けておりますので気軽にお尋ねください。