「すりぬけ床」を考えてみる

「すりぬけ床」を考えてみる

 ジャンプアクションゲームでときどき見かけるのが「すりぬけられる床」です。と言ってもイメージしづらいかもしれません。
 ふだんは〈床〉としてプレイヤーが上に乗る場所。ただの床とちょっと違うのは、下からその床に当たるようにジャンプすると、床をすりぬけて床の上に着地する。その床の上で下方向にジャンプすれば、床をすりぬけて下に落ちることができる。……そういう場所です。
 文字だけではピンとこないでしょうか。実例のFlashをごらんください。
(なぜか緑色にチカチカしたり、すりぬけ落下の操作が「下+ジャンプ」じゃなく「下」になっていますが、いまは気にしないでおいてください)

画面クリック:開始
カーソルキー左右:移動
カーソルキー下:床をすりぬけて落下
X:ジャンプ

 すりぬけ床、なんとなくわかってもらえたでしょうか。
 「壁」機能を普通に使うと、上にはともかく下に向かってすり抜けられないので、ガジェットで作ることにします。
 ではガジェットですりぬけ床を簡単に実現するには、どうしたらいいでしょうか。

 例のFlashですが、実は緑色になっている床は「上に乗れない(ただすり抜けるだけの)床」、緑色じゃない間は「普通の床」として機能しています。変化がわかりやすいように色をつけてみました。
 この床ガジェットが緑色になる(すり抜けるようになる)のには法則があるのにお気付きでしょうか?

  1. プレイヤーが床の上で下ボタンを押したとき
  2. プレイヤーが床の下45度~135度の範囲にいる間

 この条件のどちらかを満たしたとき、すり抜けるように設定してあるのです。

 (1) 床ガジェットの上で下ボタンを押せばすり抜ける、というのは右図にあるとおり、単純にボタン操作との対応なので比較的わかりやすいでしょう(この例では説明をシンプルにするために、「下+ジャンプ」ではなく、下ボタンだけで動作するようにしてあります。「下+ジャンプ」に対応させるには、この図のように、プレイヤーの〈通常のジャンプ〉とは別に、〈下+ジャンプ〉用の動作プログラムを作って対応させるのがいいでしょう)。

 (2)は床ガジェットの下からジャンプですり抜ける設定なのですが、ちょっと発想の転換がいるかもしれません。
 つまり、床から見て下/左下/右下方向のどこかプレイヤーがいたら、その間だけガジェットの当たり判定を無くしているんですね(右図赤線)。下からプレイヤーが床に当たるということはイコールすり抜けてほしい状態なので、この設定ですり抜け床の設定になるわけです。
 ちなみに、このサンプルでは「重力」設定をしているので、ジャンプ速度を「0」にして重力を無視させています(右図黄色)。「重力」の設定がなければジャンプ速度はそのままでOKです。サンプルで実際に変化をつけてみると違いがわかりやすいでしょう。

 見逃しやすいポイントですが、「すり抜け床」の場合、ガジェットの原点はサンプルの通り床の下のあたりにしておいた方が安全でしょう。上の方(たとえば床の表面)が原点だと、床ガジェットに乗ったときにプレイヤーの原点と衝突して〈プレイヤーが床の下にいる〉と判断されてしまうことがあります。

 サンプルのgpdファイルはこちらからダウンロードできます。応用の研究にも活用してみてください。

利用方法

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

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

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

交信なう