2D格闘ツクール2nd 完全攻略

■ チュートリアル


■ コマンド解説


■ テクニック解説
 001 特殊なキャラクターセレクト
 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 ハイジャンプの作成


■ バグ・よくあるミス


■ テスト時のチェック項目


■ 解説用データ ダウンロード


010

変数による分岐命令

変数による分岐命令

2D格闘ツクールには、スクリプトの分岐に関する命令がいくつかあります。
今回説明する「変数による分岐」では
変数に値を代入して記録したり、その値を加算減算したり、
また、計算結果を基準とした処理の分岐を行うことが出来ます。
※上の例では、キャラとアイテムそれぞれのX座標を変数に代入することで判定を行っています。

慣れないとわかりにくい部分ではありますが、
変数に関するルールなども含めてじっくり説明していきたいと思います。



変数の種類と主な用途
2D格闘ツクールでは、3種類の変数を扱うことが出来ます。
まずは機能説明に入る前に、これら3種類の特徴について説明しておきたいと思います。
( 影響範囲の大きいものから順に説明します )

------------------------------------------------------------
1.システム変数
ソフトを終了するまで値が保持されます。
※システム変数をリセットしたい時は、「対象のシステム変数に0を代入する」という処理を用意すると良いです。

後述するキャラ変数と違ってプレーヤーごとの区別は無いので
1P/2P間のやり取り その他、色々な場面で使えます。

ゲーム全体で値を参照できるソフト終了まで値を保持 ということもあって
ゲーム固有のシステムを組む際など幅広い用途が考えられます。

ただし、変数の数はゲーム全体でA〜Pの16個、とあまり余裕は無いので
使いどころをよく考えるようにしてください。
( 後述する2や3のタイプで済む処理なら、そちらを使った方が良いです )

システム変数の主な使い道
・1P側で2P側のX座標を知りたい
・ゲームの周回プレイを基準とした分岐がしたい
・その他ゲーム全体に関わるルールを表現したい


------------------------------------------------------------
2.キャラ変数
キャラごと個別に持っている変数で、ラウンド終了時に値がリセットされます。
1Pのキャラ変数A ≠ 2Pのキャラ変数A

変数の数はA〜Pの16個、システム変数よりは数に余裕があります。
用途としては、キャラクターの状態を記録するのに使うと良いです。
 例えば、気絶やダウン・ガードクラッシュ用のカウントなど
 キャラごと別々に管理する要素を記録するのに向いています。


------------------------------------------------------------
3.タスク変数
上で説明した12に比べると寿命が短く、使いどころが難しいですが
数値計算の一時的な記録用に使うと良いです。
(極端なローカル変数だと考えてください)

変数は各行ごとに個別にA〜Pの16個を持っています。
1行目のタスク変数A ≠ 2行目のタスク変数A
若干使いにくいですが、数だけはたっぷりあります。

MEMO

タスク変数の寿命
先述したとおり、タスク変数の寿命は非常に短いです。
スクリプト移動など行を移動する命令を通ると値がリセットされてしまいます。

ただし、例外として
スクリプト呼出で一時的に別の行へ移動した場合
タスク変数の値が保持されます。


例えば、スクリプトの呼出元でタスク変数Aに値 50 を入れていた場合
スクリプトの呼出先となるスクリプトでもタスク変数Aの値は 50 です。
呼出先終了時は呼出元の行に処理が戻ってきますが、
その時も呼出先終了時点の値が保持されます。

値を保持する条件が限られることを考えると
タスク変数で数値を計算して、
その結果をシステム変数やキャラ変数に記録する

という使い方が向いているかもしれません。

各変数の特徴について以下にまとめておきます。
タイプ 個数 参照できる場所 リセットされるタイミング
システム変数 ゲーム全体で16個 ゲーム全体 ソフト終了までリセットなし
キャラ変数 各キャラごとに16個 各キャラのスクリプト内 各ラウンド終了時
タスク変数 各スクリプト行ごとに16個 各スクリプト行内 スクリプトの移動 or 終了時
出来るだけ使い道に合った変数を選ぶようにしてください。



画面説明

変数による分岐の画面を確認しておきます。

1.変数
2.数値計算
3.条件分岐

23 は処理を行う場合のみ設定する項目なので
実際に入力する箇所はあまり多くないです。



機能説明
各種設定項目について順番に説明します。

------------------------------------------------------------
1.変数

ここでは、変数のタイプ・番号を指定します。
システム・キャラ・タスクそれぞれ16個ずつの変数があるので、
変数の番号指定を間違えないよう気をつけてください。


MEMO

変数の番号指定ミスに注意
ここは本当に間違いやすいです。
処理が上手く動かない時は、まずこのミスを疑ってください。
 例えば、代入時はキャラ変数Bが対象だったのに
 後で条件分岐する際にキャラ変数Aを対象にする、など。


確認する際も不要な間違いが起きないように、出来れば
変数の使い道を一覧表としてしっかり管理しておくことをお勧めします。
参考:テクニック016 変数の一覧を記録

------------------------------------------------------------
2.数値計算

ここでは、指定した変数を対象として各種数値計算の処理を設定します。

数値計算無し

数値計算を行いません。
これを選択している場合、数値入力欄が使えません。


代入

数値欄に値を代入します。
なお、設定可能な値は -30000 〜 +30000 となっています。


左側の入力欄に値を入れるか、その下にある変数使用の欄を使ってください。
※変数使用の詳しい内容については後で説明します。


足す

変数に値を加算します。
設定可能な値は代入と同じで -30000 〜 +30000 となっています。

こちらの場合も、数値入力欄か変数使用の欄を使ってください。
なお、減算したい時は数値入力欄にマイナスの値を入れると良いです。

残念ながら…
ある変数から別の変数を値を引く、など変数同士直接の減算処理は出来ません。
どうしても計算したい場合はタスク変数などを使って減算処理を組むようにしてください。
参考:テクニック011 変数の大小チェック


MEMO

変数使用の内容

変数使用の欄にチェックを入れると、
様々な変数を計算上で使うことが出来るようになります。
以下は、その一覧になります。

タスク変数A〜P

キャラ変数A〜P

システム変数A〜P

データ:X座標
変数分岐命令を置いているスクリプトのX座標、画面左上を0として計算
( キャラのスクリプトなら、キャラのX座標=キャラの中心軸位置になります )

データ:Y座標
変数分岐命令を置いているスクリプトのY座標、画面左上を0として計算
( キャラのスクリプトなら、キャラのY座標=キャラの中心軸位置になります )

データ:MAP X座標
現在表示している画面範囲のX座標、ステージ全体の左上を0として計算
( 画面が今ステージ全体のどこを表示しているか )

データ:MAP Y座標
現在表示している画面範囲のY座標、ステージ全体の左上を0として計算
( 画面が今ステージ全体のどこを表示しているか )

データ:親X座標
変数分岐命令を置いているスクリプトの、呼出元スクリプトX座標
( 飛び道具のスクリプトなら、それを発生させたキャラのX座標 )

データ:親Y座標
変数分岐命令を置いているスクリプトの、呼出元スクリプトY座標
( 飛び道具のスクリプトなら、それを発生させたキャラのX座標 )

座標関連の変数とゲーム実行画面の関係を
図で示すと以下のような感じになります。

※ここでは、キャラの飛び道具OBJに変数命令を置いた場合を想定しています。

データ:タイム
対戦時に表示される残りタイムの値(0〜99)
( タイム無制限の場合は、タイムの値も0? )

データ:ラウンド数
現在のラウンド数、対戦が終了するとリセットされる

------------------------------------------------------------
3.条件分岐

変数の値を基準とした分岐処理を行います。
※数値計算で処理を入れている場合は、それを含めた結果を対象として分岐判定を行います。


条件分岐無し

変数値による条件分岐を行いません。
これを選択している場合は、左の数値入力欄が使えません。


条件分岐有り

指定した変数を対象として左の入力欄に入れた数値と比較、
その結果を基準にして処理の分岐を行います。
※ここで指定した条件を満たしていた場合は、下方にある飛び先で指定したスクリプトへ移動します。

同じだったら
「変数の値=入力欄の値」だった場合に実行します。

以上だったら
「変数の値>入力欄の値」だった場合に実行します。
表示は「以上」となっていますが、ここは「〜より大きい」の意味で理解してください。
※「=」の意味で「同じだったら」という選択肢があるので
 一度覚えておけば間違うことは無いと思います。


以下だったら
「変数の値<入力欄の値」だった場合に実行します。
「以上」と同じように、ここも「〜より小さい」の意味で理解してください。



変数活用のコツ・注意点
ここでは、変数を使用する際のコツや注意点を説明しておきます。
十分に理解して間違いのないようにしてください。

------------------------------------------------------------
1.後に画像呼出命令が無いと動かない

2D格闘ツクールの命令には画像呼出命令がセットでないと
動いてくれないものが多く、変数による分岐命令もその1つです。

条件としては、行内に1つでも画像呼出命令があればOKなので
上図画像のように1つの画像命令の前に複数の変数命令が並んでいても問題ありません。

 ただし、PCの処理落ちでWAIT値の小さい画像命令の表示が飛ばされると
 一緒に並んでいた変数処理の動作に影響が出る可能性もあるので
 この点は十分に注意しておいた方が良いです。



------------------------------------------------------------
2.変数の計算はかなり速い

はっきり計算したわけではありませんが、変数の計算処理はかなり速いです。

2D格闘ツクールに用意されている計算は加算・減算しかないので
何か特別な計算をするとなると、
「変数Aを+10する、を100回繰り返した結果を変数Bに代入」
といったループ処理を組むことになります。
 乗算などができない分、全て単純な加算処理に置き換えて表現します。
 非常に原始的ですが、この考え方は変数を活かすのに有効です。


繰り返し処理ということもあって時間がかかりそうに見えますが
実際の計算時間は非常に短く、変数の計算が間に合わなくて処理がバグる
といったことはめったにありません。
処理遅れを気にせず、遠慮なく変数計算を利用してください。
 上のスクリプト例では、赤色の部分でループ処理を組んでいます。
 ここで、ループ内に画像呼出命令を置いていない点に注目してください。
 WAIT値を持った画像命令が入ると、ループするたびに
 WAIT値分の待ち時間が発生してしまうので注意してください。



------------------------------------------------------------
3.変数を参照する前に計算待ちが必要

上で 変数の計算時間が短い、と述べましたが
完全に計算時間が0、というわけではありません。

あるスクリプトで計算した結果得られた変数値を
別のスクリプトで利用する場合は、
前者の処理が終わるのを待ってから値を参照する必要があります。

例えば、対戦開始時に「1P側のみ処理する」要素がある場合
「1Pと2Pを区別する」処理の完了を待つ必要があります。
WAIT値の小さい画像命令などを手前に置いて、待つようにしてください。
※上図スクリプトでは、色のついた部分で「変数の計算待ち」をしています。

計算と同時に別の箇所で変数値を参照すると
正しい値を得られないので、気をつけるようにしてください。



2D格闘ツクール上で「標準機能にないルール」を表現する際は
見た目に「それらしい」グラフィックを配置して、
スクリプト側でそれらをコントロールすることで実現します。

そういった場面で重要なのが、今回説明した変数による分岐処理です。
変数使用の欄では様々なデータを参照できますし
新たに自分で処理を組んで対象の座標値を取得する、といったことも可能です。
( 若干回りくどいですが )

これだけ聞くとなんでも出来そうに聞こえますが、
2D格闘ツクールで扱える変数の数には限りがあって
何か処理を組む際に油断しているとすぐに全部使い切ってしまいます。
このページで説明した変数のタイプと特性を十分に理解して、
無駄なく変数を使いこなすようにしてください。

------------------------------------------------------------
以上、長くなりましたが変数による分岐命令の
機能および使い道に関する説明を終えます。
なお、今回説明した内容について気になる点・疑問点などあれば
掲示板 にて受け付けておりますので気軽にお尋ねください。

 変数については、まだ十分にわかっていない部分もあるので
 このページに載っていない情報などがあれば教えていただけると助かります。







ページ先頭へもどる

トップページへもどる

inserted by FC2 system