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
■ テスト時のチェック項目
■ 解説用データ ダウンロード
015
ゲームモードによる分岐
ゲームを製作していく上で、
「ゲームのモードに合わせて処理を分けたい」
という場面があるかもしれません。
今回は、
「ゲームモードによる分岐」処理について説明します。
( 手っ取り早く仕組みだけ知りたい場合はこちら )
作成する内容の確認
最初に、今回の説明用に作成する処理について確認しておきます。
今回は… ストーリーモード( 1Pモード )、対戦モード( VSモード )で 表示内容が変化する「キャラクターセレクト」デモを作成します。 |
例えば、以下のようなイメージになります。
ストーリーモードでは、画面上部に「ストーリーモード」と表示します。
一方、VSモードでは「対戦モード」と表示します。
テスト用「デモ」の用意
まずは、「キャラクターセレクト」デモを用意してください。
( まだ作成していない場合は、こちらを参考にしてください )
デモの用意が出来たら、
ゲームモード表示用のスクリプトを追加します。
以下は、今回のスクリプトで使用する画像になります。
( 上下2枚のグラフィックです )
※ゲーム用BMPは上記画像のリンク先にて提供しております。
具体的なスクリプトの内容について以下表に示します。
番号 | 命令 | 設定内容 |
1 | システム変数Fが0以上なら4へ | |
2 | 「ストーリーモード」のグラフィック | |
3 | 1へ | |
4 | 「対戦モード」のグラフィック | |
5 | 1へ |
実際の意味としては「〜より大きい」なので注意してください。
1ブロック目の変数分岐ですが、
例ではシステム変数Fを使っています。
このあたりは、自分のゲーム環境に合わせて変更してください。
処理内容としては、以下のような感じになります。
ブロック1にて、システム変数から「ゲームモード」情報を取得、
「対戦モード」である場合は、ブロック4に飛びます。
( そうでない場合は、そのままブロック2へ移動 )
ブロック2〜3、ブロック4〜5どちらの場合も
スクリプトの先頭に戻るループ構造になっています。
ゲームモードの判定
ここが、このページのメインになります。
テストプレーでタイトル画面を表示してください。
画面には各種ゲームモードが表示されており、
カーソルを移動して選択するようになっています。
このカーソルの座標を基準にして、
ゲームモードの区別を行うことが出来ます。
今回の例では、各項目が次のように配置されています。
なお、項目の配置座標は「ゲームシステム - 基本イメージ」にて確認することができます。
座標配置から考えて、以下のように判定することができます。
カーソルのY座標<350 なら、 「ストーリーモード」
カーソルのY座標>350 なら、 「対戦モード」
実際のスクリプト内容について説明しましょう。
「ゲームシステム−基本イメージ」に移動してください。
「タイトルカーソル」のスクリプトを以下のように設定します。
番号 | 命令 | 設定内容 |
1 | タスク変数:Aで「データ:Y座標」を取得、値が350以上なら5へ | |
2 | システム変数Fに0を代入 | |
3 | WAIT値は短めに5くらいに設定 | |
4 | 1へ | |
5 | システム変数Fに1を代入 | |
6 | WAIT値は短めに5くらいに設定 | |
7 | 1へ |
ここでは、タスク変数を使ってカーソル画像のY座標を取得、
それを基準にしてゲームモードの分岐を行っています。
また…
分岐先では「ゲームモード」情報をシステム変数に記録、
再びスクリプトの先頭に戻るようループ構造にしてあります。
( カーソルは画面上で何度も移動させる可能性があるため )
また、 3 や 6 に配置している画像のWAITを小さめにしているのは
上記ループの回転を早くするためです。
( ループの回転が遅いと、システム変数の更新も遅くなるので…問題が発生しやすいです )
設定が済んだら、最後に「デモ」の割り当てを確認します。
「ゲームシステム−基本」を表示してください。
「キャラクター選択1P」「キャラクター選択VSシングル」が
両方とも、さっき編集したデモファイルになっていることを確認してください。
※例では、「select」というデモを割り当てています
これで、「ゲームモードによる分岐」の設定が完了です。
処理を確認
テストプレーを実行して、処理を確認してみます。
タイトル画面です。
キーの上下左右入力でカーソルを移動できます。
今回は、1P MODE( ストーリーモード )を選択します。
キャラクターセレクト画面が表示されました。
画面上部には「ストーリーモード」の文字が確認できます。
一方、タイトル画面で2P MODE( 対戦モード )を選択した場合…
画面上部には「対戦モード」の文字が表示されます。
キャラクターセレクト画面からリセット( PAUSEボタン押し )
した場合も問題なく動作します。
これでゲームモードの判定が正しく行われていることが確認できました。
今回のテストでは
「ゲームモードによる分岐」の使用例として、
「キャラクターセレクトでの画面表示を変える」という処理を行いましたが…
これ以外にも様々な場面で活用できると思います。
色々試してみると良いでしょう。
以上で、「ゲームモードによる分岐」の説明を終えます。