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
■ テスト時のチェック項目
■ 解説用データ ダウンロード
014
コマンドが左右反転する
必殺技の中には空中で出せるものもあります。
2D格闘ツクールでそれらの技を使う場合に問題となるのが、
キャラがジャンプで相手を飛び越えた際のコマンド入力です。
今回は相手を飛び越えた瞬間にコマンドが左右反転する問題について
その対策を説明したいと思います。
問題点の確認
現在、キャラクターには
空中で使用可能な以下2種類の必殺技が用意されています。
1つ目の技
空中まわしげり コマンド(キャラ右向き時) ↓ ・ ←+A 斜め上方に飛び上がりながらまわしげりを行う技。 |
スクリプト解説
番号 | 命令 | 設定内容 |
1 | 1枚目の画像 WAIT = 2 | |
2 | 「ぶつかり」 「やられ」ON | |
3 〜 6 | 1〜4枚目の画像 WAIT = 2 〜 7 | |
7 | 移動X=4.67 移動Y=-3.30 重量X=0 重力Y=0.4 | |
8 〜 9 | 5〜6枚目の画像 WAIT = 2 〜 3 | |
10 | 各種リアクション設定 | |
11 | 足のあたりに攻撃判定 | |
12 | 7枚目の画像 WAIT = 15 | |
13 | 攻撃判定をリセット | |
14 〜 17 | 8〜11枚目の画像 WAIT = 4 〜 8 | |
18 |
※あくまで技動作の一例です。
上記表通りにスクリプトを組まなければいけない、ということは無いので安心してください。
「空中まわしげり」のグラフィック
※ゲーム用BMPは上記画像のリンク先にて提供しております。
2つ目の技
空中飛び道具 コマンド(キャラ右向き時) ↓ ・ →+A 自身の前方に向けて飛び道具を放つ技。 |
スクリプト解説
番号 | 命令 | 設定内容 |
1 | 1枚目の画像 WAIT = 2 | |
2 | 「ぶつかり」「やられ」ON | |
3 〜 4 | 1〜2枚目の画像 WAIT = 2 | |
5 | 移動Y = 0を代入、 他は無視 | |
6 〜 8 | 3〜5枚目の画像 WAIT = 2 〜 12 | |
9 | 移動X = 0 移動Y = 0を代入、 他は無視 | |
10 | 移動X = -1.19 移動Y = -3.16 重力X = 0 重力Y = -0.1を足す |
|
11 | 7枚目の画像 WAIT = 2 | |
12 | 飛び道具OBJを発生 | |
13 〜 16 | 7〜10枚目の画像 WAIT = 8 〜 22 | |
17 |
「空中飛び道具」のグラフィック
「飛び道具OBJ」のグラフィック
※ゲーム用BMPは上記画像のリンク先にて提供しております。
------------------------------------------------------------
実際にテストプレーで動作を確認してみます。
テスト開始、画面左側に見えるのが自キャラです。
ジャンプした状態で、
空中まわしげりのコマンド( ↓ ・ ←+A )を入力すると
キャラは空中まわしげりを行います。
今度は、相手キャラを飛び越えた状態で同じコマンドを入力してみます。
キャラは右を向いているのに、空中飛び道具が出ました。
空中飛び道具のコマンドが↓・→+Aであることから、
コントローラーの入力が左右反転していることがわかります。
作成する内容を確認
コマンドが左右反転すると
空中まわしげり は 空中飛び道具 に。
空中飛び道具 は 空中まわしげり に化けます。
そこで、対策として考えられるのが
左右対称のコマンドそれぞれに、
相手飛び越え時はもう一方の技に飛ぶ分岐処理を用意する
という方法です。
イメージとしては、以下のような感じになります。
キャラが相手を飛び越えているかどうかは、
双方に専用の当たり判定を置く事で判断します。
※実際には、通常の当たり判定と干渉しないよう
どちらも下方向にずらして判定を置きます。
飛び越えられる側のキャラにも、対応した当たり判定を設置しないと
コマンド反転の対策は動作しないので注意してください。
スクリプト編集
飛び越えられる側の判定
まずは位置判定用の当たり判定を用意します。
この判定は自キャラの状態に関係なく、常に存在する状態にしたいので
独立したOBJとして呼び出すことにします。
判定用OBJの行を新しく作成してください。
ここでは「位置判定用防御枠OBJ」という名前で行を追加しました。
作成が済んだら、以下のスクリプトを設置します。
スクリプト解説
番号 | 命令 | 設定内容 |
1 | 「やられ」ON X位置=-11 Y位置=2900 幅=12 高さ=100 | |
2 | WAIT = 0( 無限 ) |
表中1ブロック目では、飛び越えられる側の判定用防御枠を置いています。
防御枠の位置・サイズですが、以下の図を参考に設定してください。
サイズ調整がうまくいかない場合は、
一時的に「通常立ち」スクリプトに防御枠を置いて調整すると良いです。
防御枠の管理番号が、普段使用しているものと重複しないよう注意してください。
例では、管理番号 18 に設定しています。
2ブロック目では透明画像を配置しています。
透明画像をまだ読み込んでいない場合は、以下の画像を使用してください。
※ゲーム用BMPは上記画像のリンク先にて提供しております。
判定用スクリプトが出来たら、次はこれを呼び出す設定を追加します。
「開始時」スクリプトへ移動してください。
色々とブロックが並んでいますが、色違いの部分に注目してください。
ここでは「位置判定用防御枠OBJ」を呼び出しています。
親と同期 オプションがONになっている点に注意してください。
これで飛び越えられる側の判定が用意できました。
(後でもう一度当たり判定の位置を調節します)
------------------------------------------------------------
飛び越える側の判定
今回は「空中まわしげり」と「空中飛び道具」という
コマンドが左右対称の動作に飛び越える側の判定を追加します。
以下のような処理をセットしてください。
スクリプト解説
番号 | 命令 | 設定内容 |
1 | 攻撃が当たったら、「空中飛び道具」へ ( 「空中飛び道具」 の場合は「空中まわしげり」 へ ) |
|
2 | 攻撃力=0、 位置、?位置=-79 Y位置=3130 幅=80 高さ=100 | |
3 | 技動作の1枚目の画像 | |
5 | 攻撃が当たったら、「設定無し」 ( 設定のリセット ) |
処理内容としては、だいたい次のような感じになります。
2ブロック目でセットした攻撃判定がヒットすると、
1ブロック目の条件判定が成立、もう一方の技スクリプトへ飛ぶ。
画像ブロックを1つ越えた先で
攻撃が当たったら の分岐を解除している点に注意してください。
※ここで解除しておかないと、通常の攻撃においても判定が成立してしまいます。
2ブロック目の攻撃判定について、
以下の図を参考にして位置やサイズを決めてください。
実際に画面上に表示すると下のような感じになります。
管理番号は普段使うものと同じで構いませんが、
不安がある場合は別のものを設定してください。
番号としては、ラストである19番などがお勧めです。
一方の技の設定が済んだら、
続けてもう一方の技にも同様の処理を追加してください。
------------------------------------------------------------
判定枠の移動
ここで一旦テストプレーを行い、判定枠の位置関係を確認しておきましょう。
ゲーム開始、空中で問題の技コマンドを入力すると…
キャラが技を出しました。
自キャラと相手キャラそれぞれの当たり判定を確認してください。
(相手と飛び越えた状態で判定が重なるようであればOK)
確認が済んだら、
飛び越え用の判定枠が通常の防御枠・攻撃枠と干渉しないよう位置をずらしておきましょう。
飛び越えられる側の防御枠です。
ここでは、枠のY位置を元の値から+3000しています。
次は飛び越える側の攻撃枠です。
ここでも同様にして、Y位置をぴったり+3000しています。
以上で、相手飛び越え時のコマンド反転対策が完成です。
テストプレーで処理を確認
テストプレーを実行して相手飛び越え時のコマンド反転を解消できているか確認します。
ゲーム開始、自キャラで相手を飛び越えます。
ここで、コマンド「↓・←+A」を入力してみます。
本来このコマンドは「空中とびげり」のものですが、
相手キャラを飛び越えているとコマンド反転で
「↓・→+A」の「空中飛び道具」に化けてしまいます。
実際に画面を確認してみると
問題なく、「空中とびげり」が出ました。
同様にして「空中飛び道具」も
コマンド反転の影響を受けることなく空中で出すことができます。
以上の結果から、
相手飛び越え時のコマンド反転を回避できていることが確認出来ました。
判定がうまくいかなかった場合は、
もう一度各種当たり判定の位置を見直すようにしてください。
MEMO
左右対称のコマンドが無い場合
例では動きがわかりやすいよう
左右対称の2コマンドを持つキャラについて説明しましたが、
対となるコマンドを持たない場合についても軽く触れておきます。
まずは、左右反転したコマンドを登録しておきます。
※空中のみに動作設定するのがポイントです。
対となる技のかわりに
一瞬だけ表示される空中落下ポーズを用意します。
ここでは「空中での逆コマンド」というスクリプトを作成しました。
コマンド入力しても何もしない、という扱いです。
お互いの技に対して、飛び越えの分岐処理を用意します。
※このあたりの処理は変わりません。
以上でOKです。
唯一注意すべきなのが、空中攻撃からキャンセルで
「空中での逆コマンド」を呼ぶことがないように
キャンセル条件を設定する、という点。
一瞬で終わる逆コマンドを経由して
連続で空中攻撃を出せるようになるとまずいです。
面倒な場合は、「空中での逆コマンド」スクリプトで
空中落下ポーズに長めのWAITを置くようにしてください。
今回は相手飛び越え時コマンド反転の対策として
当たり判定による方法を説明しました。
正確な座標比較などを行っているわけではないので
やや大雑把な判定になりますが、うまく調整してください。
各種当たり判定に加えて、
前ジャンプ動作のX移動値などをいじると良いです。
以上、長くなりましたが
相手を飛び越えるとコマンドが左右反転に関する説明を終えます。
なお、今回説明した内容について気になる点や疑問点などがあれば
掲示板 にて受け付けておりますので気軽にお尋ねください。