「着地モーション」にみる、条件分岐と硬直時間

「着地モーション」にみる、条件分岐と硬直時間

 「状態によって動作を変える」というとなにか難しそうですが、ゲームではしばしば起きることです。たとえば、「落下した高さによって着地モーションを変化させる」、とかいうことですね。

画面クリック:開始
カーソルキー左右:移動
X:ジャンプ

 このサンプルでは普通のジャンプ程度の着地では特にモーションをつけずに、ある程度高いところから落下すると主人公の着地モーションを表示、さらに高いところからだともっと重そうな着地モーションを表示……というように、落ちた高さによって3段階の動作を用意しています。
 こういう動作を『アクションゲームツクール』で作るコツは、必要な条件を判定するうまいポイントを見つけることです。この例では、〈落下し始めてから着地するまでの時間〉によって動作を切り替えることにしています。
 次の3つの画面を見てください。

 動作プログラム「落下」から、状態によって動作プログラム「凄く高い位置からの着地」「高い位置からの着地」「待機」の3つのうちどれかに切り替えるようになっています。
 まず、かなり高いところから落ちたときの条件です(画像左)。条件は「足元に壁がある」「一定時間経過した(0.90)」の2つ。つまり、着地までに0.90以上かかった時に動作プログラム「凄く高い位置からの着地」に切り替わるということです。
 それよりも低い場所から落ちたときの条件(画像中)はほとんど変わりません。経過時間がもっと短く「0.60」になっているだけです。
 それ以下になるともっと単純に、時間は関係なく着地しただけで切り替わるようになっています(画像右)。

 ここで大事なのは、この3つの条件の並び順です。
 『アクションゲームツクール』では、「次の動作プログラム」のうち上にある動作プログラムほど優先されます。
 ですから、動作プログラム「落下」はまず最初に「足元に壁がある」「一定時間経過した(0.90)」を満たすかどうかを確認します。
 そうでなければ、次に「足元に壁がある」「一定時間経過した(0.60)」かどうかがチェックされます。
 それも違っていれば、ただの着地かどうか 「足元に壁がある」だけの判定に進みます。
 もしもこの順番が逆だったらどうなるでしょう?(画像)
 これではどれだけ落下時間が長くても、一律「足元に壁がある」だけで判断されて、着地モーションの意味がなくなってしまいます。

 まとめると、この場合レアな条件ほど上に配置しておけば、動作の分岐になるということですね。

 動作プログラムから呼び出される着地モーションはおもにアニメーション設定で作っています。といってもただアニメーション表示するだけではなくひと工夫つけているので、そちらも見ておきましょう。

 これは着地モーション(動作プログラム「凄く高い位置からの着地」または「高い位置からの着地」)が終わって動作プログラム「待機」に切り替わるまでの動作ですが、いわゆる〈硬直時間〉ができるように設定してあります。着地モーションの表示中はプレイヤーが身動きできないということですが、高いところから落ちたかんじとして、ちょっとそれっぽくなりますね。
 「アニメーションの表示がすべて終わった」ときに動作プログラム「待機」に切り替わるのはなんとなくわかると思います。
 この間、「選択中の動作の詳細」でプレイヤーの操作を受け付けないように設定している(画像)のがポイント。
 この設定をしないで、たとえば逆向きに方向キーを押されると、アニメーションがまた最初からやり直しになってしまいます。左右にガチャガチャすればその間ずっと硬直時間とは違う意味で動けなくなってしまうので、これはいけません。条件を「アニメーションの表示がすべて終わった」にしているときは注意しておきたいですね。

 ここまでのサンプルが入ったgpdファイルのダウンロードはこちらから。

利用方法

ダウンロードしたファイルは圧縮されていますので、各種解凍ソフトをお使いになって解凍してください。
解凍したフォルダ内にある、拡張子が“gpd”のファイルがアクションゲームツクールのプロジェクトデータです。このファイルを、プロジェクトデータを収めているフォルダ(デフォルトでは[マイ ドキュメント](Windows Vistaでは[ドキュメント])→[ACTkoolData])に入れ、アクションゲームツクールの[続きから]で読み込んでご利用ください。
※データのご利用前に、エディターを最新版にアップデートしておいてください。(アップデートプログラムはこちら

サンプルデータに関するご注意

このサンプルデータはスマイルブームが独自に制作したものです。
データについてのお問い合わせは、スマイルブームの担当メールアドレス(下記)宛にお願いいたします。
tkoolsupport@smileboom.com

交信なう