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
■ テスト時のチェック項目
■ 解説用データ ダウンロード
011
変数の大小チェック
格闘ツクールには変数の計算・分岐処理があるのですが、
変数同士の大小判定や計算を行う機能はありません。
※変数と通常の数値との計算は可能です
そこで、今回は2変数の大小を判定する機能の作り方について説明します。
これ自体に大きな意味はありませんが、
何か変数の比較が必要な機能を作る際に役立つと思います。
( いまいち使い所がわかりにくい、タスク変数の使用例…という意味もあります )
なお、今回は「キャラクター」-「技」にてテストしていますが
「ゲームシステム」-「基本イメージ」の場合も同様の手順で実装可能だと思います。
考え方
比較対象である2変数のうち…片方を B、もう一方を C とします。
ループ処理で両者を -1 していき…
「Bが0になった時点で、Cの値がどうなっているか?」 をチェックします。
処理の結果…
C < 0 であれば B > C
C = 0 であれば B = C
C > 0 であれば B < C
という判定になります。
※非常に原始的な処理ですが、その分わかりやすいかと思います。
「変数の大小チェック」スクリプト
他のスクリプトから呼び出して使用します。
その際は、あらかじめ呼び出し元で3つのタスク変数を定義しておきます。
変数名 | 役割 |
タスク変数A | 大小の判定結果を返す ( 0ならB = C、1ならB > C、2ならB < C ) |
タスク変数B | 1番目の判定対象 |
タスク変数C | 2番目の判定対象 |
これら3つをセットした状態で「変数の大小チェック」 スクリプトを呼び出すと、
タスク変数Aに大小判定の結果が代入されます。
呼び元のスクリプトでは、このタスク変数Aを基準にして処理の分岐をすると良いでしょう。
※「スクリプト呼出では、呼び出し元のタスク変数が参照可能」というルールを利用しています
使い方のイメージとしては、このような感じになります。
以下に、スクリプトの構成を示します。
ブロック番号 | 命令 | 設定内容 |
1 | 数値計算無し、タスク変数Bが10より小さいなら9へ | |
2 | 数値計算無し、タスク変数Bが100より小さいなら5へ | |
3 | タスク変数Cに-100を「足す」 | |
4 | タスク変数Bに-100を「足す」、結果が99より大きいなら3へ | |
5 | 数値計算無し、タスク変数Bが10より小さいなら8へ | |
6 | タスク変数Cに-10を「足す」 | |
7 | タスク変数Bに-10を「足す」、結果が9より大きいなら6へ | |
8 | 数値計算無し、タスク変数Bが1より小さいなら9へ | |
9 | タスク変数Cに-1を「足す」 | |
10 | タスク変数Bに-1を「足す」、結果が0より大きいなら9へ | |
11 | 数値計算無し、タスク変数Cが0より小さいなら15へ | |
12 | 数値計算無し、タスク変数Cが0より大きいなら17へ | |
13 | タスク変数A=0 代入 | |
14 | ||
15 | タスク変数A=1 代入 | |
16 | ||
17 | タスク変数A=2 代入 | |
18 |
※実際のスクリプトでは次のように名前を置き換えてください
「大きいなら」→「以上だったら」、 「小さいなら」→「以下だったら」
※なお、このスクリプト内には「画像呼出」ブロックを1つも置いていません
呼び出し元にも「画像呼出」ブロックがない場合、
うまく動作しない可能性があるので注意してください
最初から -1 のループをかけると時間がかかるので…
Bの桁数を基準にして処理を分岐させ、
値が大きいうちは-100、-10のループをかけています。
( 少しだけ処理が複雑になりますが、計算時間を短くすることができます )
3〜4のループでは、両者を-100していきます。( Bが2桁の値になるまで )
6〜7のループでは、両者を-10していきます。( Bが1桁の値になるまで )
9〜10のループでは、両者を-1していきます。(Bの値が0になるまで)
今回は、変数の値が3桁までであることを想定しています。
値が4桁以上になる場合は、-1000のループを用意すると良いでしょう。
※絶対に必要、というわけではありません
テストプレーでの動作確認
実際に「変数の大小チェック」スクリプトを呼び出して、処理を確認してみます。
呼び出し元のスクリプト構成は以下のようになっています。
「大小テスト」
ブロック番号 | 命令 | 設定内容 |
1 | タスク変数A=0 | |
2 | タスク変数B=430 | |
3 | タスク変数C=433 | |
4 | 「変数の大小チェック」スクリプトを呼び出し | |
5 | 「通常立ち」の画像 | |
6 | タスク変数A=1なら、10へ | |
7 | タスク変数A=2なら、12へ | |
8 | 「=」の画像 | |
9 | ||
10 | 「>」の画像 | |
11 | ||
12 | 「<」の画像 | |
13 |
上記スクリプトでは、以下の画像を使用しています。
※ゲーム用BMP画像はリンク先にて提供しております。
スクリプト前半で、判定に使う値を代入しています。
大小チェック呼出し後は、判定結果( タスク変数Aの値 )に合わせて分岐します。
なお、「大小テスト」のスクリプト自体は、コマンド入力から呼び出しています。
実験1
まずは、以下のような設定でテストを行います。
タスク変数B = 430
タスク変数C = 433
判定後に、”<”の画像が表示されれば成功です。
コマンドを入力すると…
”<”の画像が表示されました。
正しく判定が行われています。
実験2
次は以下のように設定を変えてテストします。
タスク変数B = 256
タスク変数C = 211
判定後に、”>”の画像が表示されれば成功です。
コマンドを入力すると…
”>”の画像が表示されました。
今回も正しく判定が行われています。
実験3
最後は以下のように設定します。
タスク変数B = 333
タスク変数C = 333
B = C なので、”=”の画像が表示されれば成功です。
コマンドを入力すると…
”=”の画像が表示されました。
B = C の場合も正しく判定が行われていることが確認できました。
1つ心配なのが、
「変数の大小チェック」を同時に複数のスクリプトから呼び出した場合ですが…
「タスク変数が、各スクリプト行ごとに独立した値である」
の仕様に間違いがなければ、問題なく動くと思います。
( スクリプトの呼び元が違う以上、処理に使われるタスク変数もそれぞれが別物扱いになる…はず )
今回は変数の大小チェックについて説明しましたが、
似たような処理で変数同士の引き算を行うことも可能です。
これについては、また機会があれば説明しようと思います。
また、大小チェックについて何か良い使い道が思い浮かんだら
掲示板などで教えてもらえるとありがたいです。
以上で、「変数の大小チェック」に関する説明を終えます。