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
■ テスト時のチェック項目
■ 解説用データ ダウンロード
050
キャラの向きを判別する
2D格闘ゲームではお互いに向き合って構えるのが一般的ですが
相手キャラを飛び越えた時など、一時的にこの位置関係が崩れることもあります。
※相手キャラを飛び越えた直後、相手はまだこちらへ振り向いていません。
作成するゲームによっては、キャラクターの向きに合わせて
動作のパターンを変えたいという場面もあるかと思います。
このページではそういった処理の基礎となる
キャラクターの向きを判別するテクニックについて解説したいと思います。
作成する内容の確認
ここでは例としてボタンを押すとキャラの向きを画面上に表示する
という仕組みを作りたいと思います。
以下はテストプレーの内容です。
まずはキャラクターをジャンプさせます。
今回の処理ではジャンプするたびにキャラの向き情報を更新します。
ここでBボタンを押すと…
キャラ上に方向を示す目印が表示されます。
処理の考え方
話を単純化するために、まずは1画面内(640×480)に収まるステージをイメージしてください。
格闘ツクールではOBJ発生命令を使って
キャラ位置を基準とした特定の位置にオブジェクトを発生させることができます。
今、右向きのキャラクターが画面左端(X座標:0)にいるとして
X:+400の位置にOBJを出すと、OBJのX座標は400となります。
次に、左向きのキャラが画面右端にいる場合を考えてください。
同じようにX:+400の位置にOBJを出すと…
今度はキャラが左向きなのでOBJはキャラの位置から見てX:-400の場所、
つまり画面内でX座標240の地点に発生します。
ここまでの話から、
OBJのX座標を見ることで発生元であるキャラの向きを判別することが出来そうです。
上の例だと…
OBJのX座標が画面中央(320)より大きければ自キャラは右向き。
小さければ自キャラは左向き、という具合に判別できます。
ここから先では、この考えを基にしてキャラの向き判別スクリプトを組みたいと思います。
スクリプトの作成
実際にスクリプトを組んでいきます。
以下は今回の処理で使用するグラフィックになります。
※上記画像はPNG形式となっております。
ゲーム内に読み込む際はBMP形式に変換して使ってください。
左端にあるのがキャラから発生させるオブジェクト。
右に並んでいるのはキャラの向きを画面上に表示するための目印です。
なお、キャラクターのグラフィックについては別途用意するようにしてください。
まずはキャラの向き判別用OBJのスクリプトを用意しましょう。
番号 | 命令 | 設定内容 |
1 | キャラ変数H に データ:X座標 を代入 | |
2 | 画像WAIT 50 | |
3 |
ここではあまり難しいことは行っていません。
上の方で述べた通り ここでOBJのX座標を取得、キャラ変数Hに値を保持しておきます。
※変数の番号は作成中のゲームに合わせて読み替えてください。
変数命令にあるオプション項目「変数使用」をONにすると
X座標やラウンド数など様々な要素を変数に取得することが出来ます。
ちょっと凝った処理を組む際に重宝するので覚えておくと良いでしょう。
変数分岐命令について詳しくはこちらのページを参照してください。
------------------------------------------------------------
次に、OBJ発生の処理を追加します。
テストプレーの部分で説明した通り、キャラがジャンプした時にキャラの向き判定を更新します。
そのため、ここでは各種ジャンプ行の先頭に処理を追加します。
番号 | 命令 | 設定内容 |
1 | X+3000 Y-100 に「方向判定用OBJ」を発生、 無条件・奥行=手前 | |
2 | ジャンプの移動力 | |
3 | ジャンプ動作用画像 |
※今回の説明ではスクリプト全体をかなり簡略化しています。
OBJ発生の設定内容は以下の通り。
上の方ではX:+400の位置にOBJを発生させていましたが
ここではX:+3000の位置に発生させています。
格闘ツクールのステージサイズは最大で1280×960なので、
キャラから見てX:+3000の位置に出したOBJは、
その発生元がどこにいようとステージ範囲外に発生することになります。
※キャラが右を向いていた場合も同様でステージ外に発生します。
ステージの外に発生したOBJは当然ながら一瞬で消滅してしまうのですが、
スクリプト先頭に置いた変数処理だけはしっかり行ってくれます。
------------------------------------------------------------
これでキャラの向き判定の準備が整いました。
次は、実際のこの向き判定を画面上に表示する処理を組んでみます。
以下は向き判定の表示用スクリプトになります。
番号 | 命令 | 設定内容 |
1 | キャラ変数H 0以下だったら 4 へ | |
2 | 向き判定用目印 「右」画像、 WAIT = 50 | |
3 | ||
4 | 向き判定用目印 「左」画像、 WAIT = 50 | |
5 |
1ブロック目にて、変数値による分岐を行っていますが、ここでの判定値には 0 を使用しています。
繰り返しになりますが、ステージ内のX座標は 0 〜 1280 なので
OBJの発生位置は大体 -3000 〜 4280 あたりになります。
キャラがどこにいるかは関係なく
右を向いていればプラス方面のどこか、左を向いていればマイナス方面のどこか、
というルールでOBJが発生するため
単純に変数値のプラスorマイナスをチェックすれば自ずとキャラの向きも取得できるわけです。
MEMO
向き判別用の記号
ここでは向き判定用の記号として感じを使っています。
別に矢印の画像でも構わないのですが、
矢印だとキャラの向きによってグラフィックが
左右反転した際に見分けがつかなくなるので
見間違いよいうがない「左」「右」を目印としています。
なお、グラフィックを左右反転させないようにするには
画像呼出命令のオプション「キャラクターの向きを無視」を
ONにしておくと良いです。
最後に向き判定表示を出現させるためのスクリプトを用意します。
どんな形でも構いませんが、ここではシンプルにBボタン押しの技として用意しました。
細かいスクリプトの内容については説明を省略しますが
キャラの頭上あたりに目印を出すようにします。
これでキャラの向き表示の処理が完成です。
テストプレーを実行して処理を確認してください。
テストプレーで処理を確認
相手を飛び越えたところです。
キャラはジャンプ時の向きを維持しているため向き判定の表示も「右」となっています。
色々キャラを動かしながら方向判定に間違いが無いか確認してみてください。
めくりとの関連もあって
飛び越えの前後でキャラの向きを把握しておくと表現の幅がかなり広がると思います。
今回はジャンプ時の向きを基準として表示しましたが
やられ動作などに設定してめくり状態での攻防を作りこむのも面白いでしょう。
以上、長くなりましたがキャラの向きを判別する方法についての説明を終えます。
なお、今回説明した内容について気になる点や疑問点などがあれば
掲示板 にて質問を受け付けておりますので気軽にお尋ねください。