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
■ テスト時のチェック項目
■ 解説用データ ダウンロード
007
画面端でのヒットバック1
格闘ゲームには、ヒットバック処理というものがあります。
これは「キャラが攻撃を受けた際に後方に少し下がる」
という処理で、連続ヒットの回数を抑えるために行われます。
格闘ツクールでは、
やられ動作に座標移動を入れることで ヒットバックを表現します。
例えば、以下のようにスクリプトを組みます。
ただし、このままだと
画面端でヒットバックした際に問題が発生します。
画面端では、なぜか攻撃を受けたキャラではなく、
攻撃した側のキャラが後方に下がってしまうのです。
今回は、
この画面端でのヒットバックにおける問題と、その対処方法について説明していきましょう。
問題確認:
実際に処理を確認してみます。
なお、ここでは処理をわかりやすくするため、
ヒットバックの移動距離を大きめに設定しています
まずは通常のヒットバック処理です。
キャラが攻撃を受けると…
( 攻撃を受けたキャラは )やられ動作を行い、後方に下がります。
少々わかりにくいですが、ヒットバックでの移動距離を覚えておいてください。
次に、画面端( 壁際 )での処理を確認します。
キャラが攻撃を受けると…
やられ動作を行います。
ここで、各キャラの位置関係に注目してください。
攻撃を受けた側のキャラは位置が変わっていません。
それに対して、なぜか攻撃した側のキャラが後方に下がっています。
原因:
詳しい仕組みはわかりませんが、
だいたい以下のような感じの処理が行われているのではないかと思います。
自キャラが攻撃を受けると、
やられリアクションの中でヒットバックしようと後方に下がります。
自身が壁際に立っていた場合、キャラは壁を押して後方に下がります。
( ただし、ステージ端なので背景画像は変化しません )
また、カメラ( 画面表示範囲 )は互いのキャラが画面内に映るように移動します。
この時、攻撃側キャラは移動を行いません。
その結果…
攻撃側キャラだけが( 相対的に )後方へ移動したように見えます。
対策:
画面端での不自然なヒットバックを回避するには、
キャラが壁に触れた時にX方向の移動設定をリセットするのが有効です。
以下、具体的な手順を説明していきます。
今回のテストで使用するキャラグラフィック( 合計5枚 )です。
やられモーションとしては、やや枚数が多いですが
これは処理を説明するためのものになります。
※ゲーム用BMPは、上記画像のリンク先にて提供しております
まずは、
やられ動作の基本形を組みます。
ブロック番号 | 命令 | 設定内容 |
1 | やられ・ぶつかり判定 | |
2 | ヒットバックの移動量設定 | |
3 | やられ画像1枚目 | |
4 | やられ画像2枚目 | |
5 | やられ画像3枚目 | |
6 | やられ画像4枚目 | |
7 | 移動量のリセット | |
8 | やられ画像5枚目 |
ブロック番号7に入るまで、キャラは後方に移動します。
ここに、「壁に触れたらX移動をリセットする」の処理を追加します。
※赤色の部分が追加した処理になります
ブロック番号 | 命令 | 設定内容 |
1 | やられ・ぶつかり判定 | |
2 | ヒットバックの移動量設定 | |
3 | やられ画像1枚目 | |
4 | 「壁に当ったら」 6へ | |
5 | 7へ | |
6 | X方向の移動を0に | |
7 | やられ・ぶつかり判定 | |
8 | やられ画像2枚目 | |
9 | やられ画像3枚目 | |
10 | やられ画像4枚目 | |
11 | 移動量のリセット | |
12 | やられ画像5枚目 |
元のスクリプトでの3 〜 4間に処理を追加しています。
キャラが壁に接触した場合は、「X移動のリセット」に飛びます。
そうでない場合は、「リセット部分」を飛ばして次のブロックへ向かいます。
なお、分岐処理後には防御枠の設定を入れておきます。
( 細かいスクリプト移動などによって防御枠が消えるので、再設定しておく )
ただ、このままだと問題が残ります。
上記スクリプトで、
10番の画像呼出を表示している時にキャラが壁に接触すると…
スクリプト6番に飛びます。
この時、キャラのグラフィックは8番のものに戻ってしまいます。
この問題を解決する方法としては、次のようなものがあります。
( あまりスマートとは言えませんが )
元のスクリプト8番だけでなく、9番以降の画像呼出にも
「壁に接触したらX移動リセット」 の処理を用意します。
壁判定処理と画像呼出ブロックを抜き出したものを以下に並べます。
※このスクリプトを1つのセットとして考えると良いです
ブロック番号 | 命令 | 設定内容 |
1 | 「壁に当ったら」 3へ | |
2 | 4へ | |
3 | X方向の移動を0に | |
4 | やられ・ぶつかり判定 | |
5 | キャラ画像 |
上記対策を施した結果、スクリプトは以下のようになります。
※内容がわかりやすいように色分けしてあります
これで、壁際でのヒットバック処理に関する設定が完成です。
どうしても処理が長くなってしまうので、
気になる場合はこの問題修正を後回しにしておいた方が良いです。
( スクリプトが長くなると、内容を把握するのも難しくなるので )
テストプレーで確認
テストプレーを実行して、ヒットバック処理の確認を行います。
画面右側のキャラが、壁際に追い詰められています。
ここで、( 右側 )キャラが攻撃を受けると…
キャラが「やられ」の動作を取ります。
壁接触時にヒットバック処理が中止されるため、ヒットバックによる移動は小さくなっています。
( 修正前の結果と比較してみてください )
今回は2枚目以降の画像からヒットバック中止の判定を行っているので…
1枚目画像の移動量のみが反映されています。
ここではヒットバック処理を中止する方法について説明しましたが、
壁際でヒットバックが全く発生しない状態にしてしまうと…
追い詰められた側のキャラが抜け出すことができず、
ゲームバランス的に問題となります。
多少はヒットバック処理を残しておくことも考えておくと良いでしょう。