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
■ テスト時のチェック項目
■ 解説用データ ダウンロード
019
やられ中にしゃがみ可能
格闘ゲームの中には攻撃が連続でヒットする技があります。
2D格闘ツクールでもそういった技を表現可能なのですが、
1つ問題があってやられ動作中に
キャラが立ち ⇔ しゃがみ
など状態を変更することが出来てしまいます。
※現象としては、やられよりもガード時の方が発生しやすいです。
ゲーム内での具体的な現象だと、
本来ヒットするはずだった攻撃がやられ中のしゃがみによって避けられる
といった問題が発生します。
何かの設定ミスだと思うかもしれませんが、普通に処理を組んで発生することから考えると
残念ながらこれは2D格闘ツクールの仕様なのだと思います。
この現象はプレイヤー(特に格闘ゲームに慣れている人)にとってかなり違和感があると思います。
そこで、このページではやられ中に状態変更出来てしまう問題
について
その対処法を説明したいと思います。
現状の確認
まずは問題の発生状況を確認しておきます。
※動作チェックする際はゲームスピードを遅めにしておくと動きを確認しやすいです。
ゲーム開始。
画面右側のキャラが左側のキャラから攻撃を受けています。
現時点で攻撃は2回連続でヒットしておりやられ側は立ちやられ状態となっています。
引き続き攻撃を行いますが、ここでやられ側が下方向に入力すると…
3ヒット目、やられ側はしゃがみやられ状態になります。
この時、やられ側は「しゃがみ中」
や「しゃがみ」の待機ポーズを取らず
「立ちやられ」
から「しゃがみやられ」へダイレクトに移行します。
※後述する対策では、この状況を処理に利用します。
対策
立ちやられ中に下入力するとしゃがみやられに化ける。
残念ながらこの流れ自体は止めることが出来ません。
そこで、ここでは
しゃがみやられに入ってから再び立ちやられ動作へ矯正する
という方法をとります。
具体的には
各種待機ポーズ先頭にてキャラの状態(立ち/空中/しゃがみ)を変数に記録、
やられリアクションが発生した時は
変数の値を基準にしてそのリアクションが正しいかどうかを判定、
間違っている場合はキャラの状態に合った動作へ移行します。
処理の流れをイメージにすると以下のような感じになります。
ここから先では、実際にスクリプトの組み方について説明していきたいと思います。
スクリプトの作成
まずはキャラの状態を判定するルールについて確認しておきます。
今回の処理では判定用にキャラ変数を1つ使います。
どの番号のキャラ変数を使うか決めておいてください。
※例ではキャラ変数Kを使用します。
次に、キャラの状態を表わす変数値を決めます。
ここでは以下のようなルールにしました。
状態変数のセット
キャラの状態を決める動作にて状態変数に値を代入します。
「通常立ち」 のスクリプト先頭に変数処理を追加、
キャラは立ち状態なので値0を代入します。
同様にして「しゃがみ」
状態にも処理を追加しましょう。
こちらの場合は変数に値2を代入します。
MEMO
どのスクリプトで状態変数をセットするか
例では話をわかりやすくするため「通常立ち」「しゃがみ」
スクリプトのみを対象として処理を追加しましたが、これら以外にも
ジャンプや空中落下、着地など主に移動・待機系の動作には
状態変数の処理を置いておいた方が良いです。
また、必殺技の中でキャラの状態を変えるものがある場合は
これについて考えておくべきでしょう。
( 例えば、跳び上がって攻撃する必殺技など )
リアクション先頭に状態判定の処理を追加
上で設定した変数を基準とした判定処理を各種リアクションの先頭に置いていきます。
しゃがみスクリプト先頭に変数分岐を追加しました。
本当は立ち状態なのに下方向入力によってしゃがみやられになっている
という場合はこの判定にひっかかって「立ちやられ」
スクリプトへ移動します。
同様にして「立ちやられ」のスクリプトや、その他
立ち/しゃがみ の化けが発生している動作にも処理を追加しておきましょう。
以上の処理が済んだら、リアクション化け対策は準備完了です。
処理を確認
再びテストプレーを実行して処理を確認します。
画面右側のキャラが左側のキャラから攻撃を受けています。
この時、やられ側は立ちやられ状態となっています。
引き続き攻撃が発生、ここでやられ側は下方向に入力しますが
やられ側は引き続き、立ちやられ状態に入ります。
------------------------------------------------------------
正確には「しゃがみやられ」
に入って
すぐに「立ちやられ」
に変化しているのですが
グラフィック表示する前に変数分岐で処理が移動しているため
ここではそのまま立ちやられ動作が連続しているように見えます。
「しゃがみ」
スクリプト先頭では、変数代入によって
「キャラ = しゃがみ状態」の処理が行われるのですが
最初の方でテストでプレイした結果から
「立ちやられ」 ⇒ 「しゃがみやられ」
の間に
「しゃがみ」
動作が入ることは有りません。
もし、格闘ツクールの仕様でやられ中に
「しゃがみ」動作を通るようだと今回のテクニックは使えません。
「立ちやられ」⇒「しゃがみ」⇒「しゃがみやられ」の流れでは
「しゃがみ」の時点で変数も「キャラ=しゃがみ状態」となるので
「しゃがみやられ」先頭、変数分岐での矯正が効かなくなります。
立ちやられの動作確認が済んだら
同様にして他のリアクション系動作についても処理を確認、
問題がある場合は再び変数処理を追加してください。
補足説明
ゲーム内で使用しているリアクションの数が多い場合、
リアクション化け対策も大変だと思います。
そこで、ここでは上で説明した処理を組んでも問題が解決しない場合の
追加の対策・調整のコツを説明しておきたいと思います。
立ちやられ⇔しゃがみやられのリアクション化けを
防ぐ処理を組んだのに、たまに防ぎきれずに化けが発生してしまう。
この場合の問題点は変数代入の効きすぎ
が考えられます。
再び処理内容の確認になりますが、
リアクション化け対策の処理をきっちり組んでいるのであれば
「変数側でキャラの状態 = しゃがみ」
となっていない限り
「しゃがみやられ」
は「立ちやられ」に矯正されます。
「しゃがみやられ」
への化けが発生するということは、
どこかのタイミングで「変数処理:キャラの状態 = しゃがみ」
が
行われているということなのです。
「立ちやられ」 ⇒ 「しゃがみやられ」
の間に入る動作があるとしたら
「しゃがみ中」
や「しゃがみ」が考えられます。
テスト時の表示ではこれらのスクリプトを通っていませんでしたが
もしかしたら内部的には処理を通っているのかもしれません。
「しゃがみ」
はともかく「しゃがみ中」先頭に
変数代入を入れている場合はこれを外すと良いかもしれません。
変数代入の抜けによって動作の矯正に失敗する、
というパターンは思いつきやすいですが
変数代入の効きすぎによって矯正が行われない、
というパターンも有るということを念頭に置いて調整を進めると良いでしょう。
------------------------------------------------------------
処理の勘違いにも注意
もう1つ、作者側の勘違いという可能性も忘れないでください。
上で説明した対策では、「通常立ち」「しゃがみ」
の先頭に変数代入の処理を入れました。
「しゃがみやられ」 の先頭を通れば、変数処理でキャラの状態はしゃがみと記録されます。
この状態で攻撃を受けた場合、当然ながらキャラは「しゃがみやられ」
となります。
気をつけたいのが
「立ちやられ」 ⇒ 「しゃがみやられ」
のリアクション化けに見せかけて、
実は「立ちやられ」 ⇒ 「しゃがみ」 ⇒ 「しゃがみやられ」
という
通常の流れを実行している場合。
これはバグではなく単なる勘違いです。
コンボ継続の条件もそうなのですが、「しゃがみ」
など待機の動作が一瞬でも表示されると
キャラの状態は切り替わるので、処理的には何も問題ありません。
テストプレーする際は多少ゲームスピードを落として
確認するとこういった見間違いを防ぐことが出来ます。
ページ先頭でも述べた通り、立ち・しゃがみでのりアクション化けは
ゲームをプレイする上でかなり大きい問題となります。
テストプレーを繰り返してしっかり調整するようにしてください。
また、ここでは立ち ⇔ しゃがみでの化け
を対象として説明しましたが
より深刻な問題として地上 ⇔ 空中でのリアクション化け
についても
今回のテクニックでかなり防げるのではないかと思います。
こちらの問題はやられ側の入力ではなく、恐らく
格闘ツクールにおけるキャラの地上/空中判定が曖昧なのが原因だと思われます。
以上、長くなりましたがやられ中に状態変更出来る問題に関する説明を終えます。
なお、今回説明した内容について気になる点や疑問点などがあれば
掲示板 にて質問を受け付けておりますので気軽にお尋ねください。