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
■ テスト時のチェック項目
■ 解説用データ ダウンロード
049
空中ジャンプを表現する
格闘ゲームにおいてジャンプとは「その後の行動が制限される」
という点でリスクのある動作と言えますが、一部の身軽なキャラは空中ジャンプなど
空中状態から移動の軌道を変える能力 = 空中ジャンプを持っています。
このページではこの空中ジャンプを例として
空中での特殊移動を表現する方法を説明したいと思います。
※ここで説明する空中ジャンプはいわゆる2段ジャンプですが
3段ジャンプも仕組みは同じなので上手く活用してください。
作成する内容の確認
まずは今回作成する処理を確認します。
ゲーム開始。
方向キーを上入力すると画面左側のキャラがジャンプします。
現在、キャラは地面に向かって落下中ですが
ここで再びキーを上方向へ入力すると…
キャラが真上へ空中ジャンプします。
なお前後への入力があった場合はジャンプの軌道も変化します。
( 真上、前方向、後方向の3つに変化します )
なお、空中ジャンプを行った後は連続で上方向入力をしても無視されます。
※着地すると、再び空中でジャンプが行えるようになります。
スクリプトの考え方
まずは通常のジャンプ動作について確認しておきます。
ジャンプは方向キーを上方面に入力した時に出ます。
これは前後の歩き動作同様、基本的な移動の動作となるため
技コマンドの設定欄を見ても載っていません。
したがって、通常のジャンプ動作からの派生として空中ジャンプを作ることは出来ません。
バックステップ や ラン、ハイジャンプ同様に独立した移動技として組む必要があります。
スクリプト行の用意
コマンド設定を始める前に、まずは呼び先となるスクリプト行を用意しておきましょう。
上の方で説明したように空中ジャンプの軌道は 3つ あります。
そのため、スクリプト側でも 3つ の行を用意することになります。
基本となる真上への空中ジャンプ、その下に前後方向への空中ジャンプが並びます。
コマンドの定義
スクリプト行が用意できたら、コマンド定義に入ります。
まずは基本となる真上への空中ジャンプから作っていきましょう。
現在、既にいくつかのコマンドが並んでいるかと思いますが
今回作成するのは基本となる移動系動作なので
一覧の中でも下の方( 優先度が低い方 )に作成します。
MEMO
コマンドの並び順
空中ジャンプのコマンドは必殺技や攻撃動作よりも上に置くと
上方面入力を使う技が出なくなるので気をつけてください。
なお、技コマンドの一覧は後から並べ替えることも出来ます。
対象の行を左クリックした状態でマウス右ボタンを押すと、カーソルの
形状が変わるのでそのままマウスを上下にドラッグ移動すると良いです。
並べ替えの操作について詳しくは こちら のページを参照してください。
------------------------------------------------------------
キャラの状態と発動条件
技コマンドは 地上/空中 などキャラの状態に合わせて発動するスクリプトを設定します。
( 例えば地上で「弱パンチ立ち」、空中で「弱パンチ空中」など )
空中ジャンプは空中でのみ発動するものなので、
空中状態での飛び先のみ設定することに注意してください。
( 先ほど用意した1つ目のスクリプト行をセットします )
------------------------------------------------------------
コマンド設定
次に空中ジャンプのコマンド内容を設定します。
単純に考えれば、以下のように上入力をセットすることになりますが
これだと地上でのジャンプ入力と空中での空中ジャンプ入力がつながってしまいます。
つまり、普通の地上ジャンプだけを出したつもりでも
空中に移動した瞬間、勝手に空中ジャンプが発動してしまうのです。
この問題は特にジャンプ動作のアニメーションが短い場合に起きやすいです。
これをふまえてコマンド入力を以下のように変更します。
真上入力の手前に ニュートラル( 方向入力なし ) を置いている点に注目してください。
「方向入力なし」の溜めコマンドを入れることで
地上でのジャンプ入力と空中での空中ジャンプ入力の間に区切りを入れています。
なお、ニュートラルの溜め時間は短めに設定しておきます。
------------------------------------------------------------
コマンド入力受付時間
コマンドの設定が済んだら、次は受付時間 をセットします。
通常の必殺技であれば 「暴発しない程度で出来るだけ長めに」 が理想的ですが、
ここではかなり短めに 受付時間 = 5 としています。
実際にテストプレーで操作してみるとわかりますが
空中ジャンプのコマンドは内容が簡単な分、
下手に受付時間を長くすると暴発しやすいです。
以上で真上への空中ジャンプコマンドが完成です。
同様にして前後方向への空中ジャンプも設定しましょう。
3つのコマンドに3つのスクリプト行をそれぞれセットしてください。
スクリプト作成
コマンド設定が済んだら、次はスクリプト行の編集に入ります。
ここでも真上への空中ジャンプを中心に作業の流れを説明していきたいと思います。
以下は今回の処理で仕様するキャラグラフィックです。
空中ジャンプ(真上)
空中ジャンプ(前方向)
空中ジャンプ(後方向)
※上記画像はPNG形式となっています。
ゲーム内に読み込む際はBMP形式に変換して使ってください。
まずは通常の手順通りキャラアニメーションを組みます。
読み込んだ画像を1枚ずつ並べます。
------------------------------------------------------------
移動力のセット
今回作成するのはジャンプ移動のスクリプトなので
ここに座標移動命令を追加するのですが
通常のジャンプ移動中に突然別方向への移動がセットされるとやや不自然な感じがします。
これは表現するキャラにもよるのですが
やはり空中ジャンプにも地上同様の「ジャンプ感」が欲しいところです。
では、どうするか?
空中ジャンプの移動力をセットする前に一瞬だけ空中でキャラを停止させます。
※少しわかりにくいですが、空中ジャンプ発動前に少し静止が入ります。
ちなみに、「停止」と言っても完全停止させるわけではありません。
上図の通り、現在の速度だけを 0 にして重力の部分は「無視」にしておきます。
重力に0を入れてしまうと、空中ジャンプ中に攻撃を受けた場合に
キャラが空中に浮いたままになる恐れがあります。
これは空中ジャンプに限らずミスしやすい部分なので十分注意してください。
以上の点に注意して移動力の設定を追加したのが次のスクリプトです。
※2つ目の座標移動命令、空中ジャンプの移動力設定です。
1つ目の座標移動命令では空中での一時停止を、
2つ目の命令では空中ジャンプの移動力をセットしています。
ちなみに、移動力以外でもジャンプ感を出したい場合は
ジャンプ時の効果音やエフェクトに凝ってみると良い結果になるかもしません。
------------------------------------------------------------
空中ジャンプの回数制限
最初の内容確認で説明した通り、
空中ジャンプは2回以上連続で出せない というルールで動きます。
※現状では何も制限を入れていないので、空中ジャンプで画面外へ飛んでいくことができます。
この制限を実現するには、スクリプトに以下のような変数分岐命令を追加します。
番号 | 命令 | 設定内容 |
1 | キャンセル無条件 技レベル1〜255 | |
2 | キャラ変数N が -1 以上なら、4 へ | |
3 | キャンセル無条件 技レベル0〜255 | |
4 | キャラ変数N に 1 を足す | |
5 | 移動Yのみ0代入、それ以外は無視 | |
6 | 1枚目の画像、WAIT = 6 | |
7 | 2枚目の画像、WAIT = 5 | |
8 | 着地したら 「着地」 へ | |
9 | 移動Y = -5.00 重力Y = 0.23 | |
10 | 3枚目の画像、WAIT = 24 | |
11 | 4枚目の画像、WAIT = 8 | |
12 | 5枚目の画像、WAIT = 12 | |
13 | 6枚目の画像、WAIT = 12 | |
14 | 7枚目の画像、WAIT = 10 | |
15 | 8枚目の画像、WAIT = 5 | |
16 | 9枚目の画像、WAIT = 5 | |
17 | 10枚目の画像、WAIT = 5 | |
18 | 15 へ |
空中ジャンプの技レベルを0に設定しておき、
空中ジャンプ済みであった場合は技レベル0の動作へのキャンセルを禁止します。
また、後々の処理で使うため着地分岐を追加している点に注意してください。
※ゲームバランスから考えても着地の隙は絶対入れておいた方が良いです。
空中ジャンプスクリプトの先頭でキャラ変数Nをチェック、
この時点で値が 0 より大きい場合は空中ジャンプを行いません。( スクリプトを終了させます )
そして、空中ジャンプを行った際、キャラ変数Nの値を+1しています。
MEMO
空中ジャンプの回数を変更
上の処理は変数の代入にしても良いのですが、加算形式にしておくと
後で空中ジャンプの回数を変えたくなった時に応用が効きます。
例えばスクリプト先頭の条件分岐で値を1にすると
空中ジャンプを連続で2回まで出せるようになります。
------------------------------------------------------------
空中ジャンプの回数制限をリセットする
このままだと空中ジャンプがゲーム中で1回しか使えなくなるので
制限を解除する処理も追加しておきます。
ここでは「着地」スクリプト行先頭にてキャラ変数Nに値 0 を代入、
空中ジャンプの条件をリセットしています。
処理を追加する対象としては、着地やダウン動作など
空中から地面に移動する際に通る動作を考えると良いです。
変数処理の抜けが心配な場合は念のため
「通常立ち」など各種待機モーションにも命令を置くと良いでしょう。
------------------------------------------------------------
以上で空中ジャンプ( 真上 )の処理が完成です。
前後方向の空中ジャンプについても基本は同じで移動力の設定だけ変えておきます。
参考用に前後ジャンプの移動力設定を載せておきます。
なお、上のスクリプトでは話を単純化するため防御枠設定などを省略していましたが
必要に応じて処理を追加しておいてください。
処理の確認
スクリプト編集が完了したら、テストプレーを実行して処理を確認します。
空中ジャンプの方向や高さに問題は無いか、テストを繰り返して調整してください。
今回の処理ではシンプルな回数制の空中ジャンプを作成しましたが
変数でキャラのY座標を取得すれば
地上からの高度を基準としたジャンプ制限も表現できます。
また、相手を飛び越した際に空中ジャンプコマンド(方向入力)の左右反転が
気になる場合は こちら のページを参考にしてスクリプトを改良すると良いです。
ページ冒頭でも述べたとおり、
空中ジャンプを使えば身軽なキャラを表現することが出来ます。
ただし、行動の自由度が高くなる分よく考えて調整しないと
キャラ間の性能バランスが崩れるので十分に注意しながら作業してください。
以上、長くなりましたが空中ジャンプを表現する方法についての説明を終えます。
なお、今回説明した内容について気になる点や疑問点などがあれば
掲示板 にて質問を受け付けておりますので気軽にお尋ねください。