マニュアル: はしごタイルとはしごにつかまる

マニュアル: はしごタイルとはしごにつかまる

このマニュアルについて

このマニュアルでは、ACTION GAME MAKER のはしご機能について解説を行います。タイル側の設定と、実行アクション「はしごにつかまる(GrabLadderTile)」、その他条件「はしごタイルに重なっている(ContactWithLadderTile)」の 3 つを組み合わせて作ります。

はしごを登りきって上に立つ、上に立った状態から下りてはしごにつかまる、といった動きも作れます(「はしごの上に立つ」の章を参照してください)。

ACTION GAME MAKER でのはしごの概要

はしごは、次の 3 つを組み合わせて作ります。

要素 役割
はしごタイル(タイル設定) どのタイルがはしごなのか、上端に乗れるかを決めます
はしごタイルに重なっている(ContactWithLadderTile) はしごの前にいるかどうかを判定する条件です
はしごにつかまる(GrabLadderTile) つかまっている間の動き(重力停止・上下移動)と、上端に立つ・上端から降りる動きを作る実行アクションです

つかまる・離れる・ジャンプで抜ける、といった切り替えはビジュアルスクリプトの遷移条件で作ります。はしごの挙動そのものはアクションが受け持ち、いつつかまるかは作り手が決める、という分担です。

はしごタイルを作る

はしごにするタイルは、タイル設定で次のようにします。

  1. 下部パネルでタイルセットを開き、はしごにするタイルを選びます。
  2. 「タイル効果」を有効にします。
  3. 「衝突判定パターン」を「重なり」にします。
  4. 「はしご」にチェックを入れます。
  5. はしごの上に立てるようにしたい場合は、「はしごの上端に乗れる」にもチェックを入れます。

「重なり」は通行を妨げない設定です。はしごは通り抜けられる必要があるため、壁として置くのではなく重なりで置きます。そのぶん接触判定は走らないため、はしごの検知は「重なっているか」で行います。「接触」に設定したタイルは、はしごとして検知されません。

「はしご」は「衝突判定パターン」が「重なり」のときだけ、「はしごの上端に乗れる」は「はしご」にチェックが入っているときだけ編集できます(それ以外のときはグレーで表示されます)。

「はしごの上端に乗れる」

チェックを入れたはしごタイルは、はしごの列の一番上のタイルの上端に、ゲーム実行時に自動で床が作られます。この床は一方通行(下からは抜けられ、上からは乗れる)で、見た目はありません。

  • 床は壁判定のタイルと同じ扱いなので、「タイルと接触」「衝突可能なものと接触」などの接地の条件がそのまま使えます。
  • 床はプレイヤーだけでなく、ほかのオブジェクトも乗ることができます。
  • 一番上のタイルか、その 1 つ上のマスに、当たり判定のあるタイル(床・壁・一方通行のタイル)を既に置いてある場合は、そのはしごには床を作りません。自分で置いた床と二重になるのを防ぐためです。この場合、そのはしごでは「はしごの上に立つ」は働きません。
  • 空中に浮かせたはしごのように、上に乗れてほしくないはしごには、チェックを入れないでください。乗れるはしごと乗れないはしごを使い分けたいときは、タイルを 2 種類用意して塗り分けます。

「はしごタイルに重なっている(ContactWithLadderTile)」

その他条件です。はしごタイルに重なっているときに成立します。

  • 判定位置: どこではしごを探すかを選びます。
    • 縦の中心線のどこか(既定): オブジェクトの中心を通る縦の線の、壁判定の上辺から足元までのどこかがはしごにかかっていれば成立します。ジャンプで飛びつくときは、頭がはしごに届いた時点でつかまれます。はしごから離れる条件にこれの反転を使うと、中心線が完全にはしごから出るまで(登りなら足元が上端を越えるまで)離れません。
    • 壁判定のどこか: 壁判定の左右の端まで含めて判定します。はしごにかすっただけでもつかまれる、操作の甘い判定です。つかまると、はしごの列の中心へ横に寄せられます(体の端だけが重なっていたときほど大きく動きます)。はしごが横に並んでいるときは、中心に一番近い列につかまります。
    • オブジェクトの中心: オブジェクトの原点で判定します。これの反転で「中心が上端を抜けた」ことを拾えるので、よじ登りアニメのきっかけに使います。
    • すぐ下にはしごがある: 壁判定の下辺のすぐ下で判定します。はしごの上端の床に立っているときに、足元の下がはしごかどうかを見るのに使います(上端から降りる入口の条件)。

はしごにつかまる入口の条件(上入力とこの条件の組み合わせなど)や、はしごから抜けたことの判定(この条件が成立しなくなったとき)に使います。

「はしごにつかまる(GrabLadderTile)」

実行アクションです。このアクションが動いている間、オブジェクトははしごにつかまった状態になります。

  • はしごを登る速さ: はしごを登り降りする速さです(1 秒あたりのピクセル数)。
  • はしごの上に立つ: 有効にすると、「はしごの上端に乗れる」にチェックを入れたはしごで、登りきったときに上端の床の上へ乗り、上端の床の上からつかまったときは床をすり抜けてはしごへ降ります。
  • 登るキー / 降りるキー: 登り降りに使うキーを指定します。既定の「移動設定と同じ」は、そのオブジェクトの移動設定の上下キーを使います。

つかまっている間の動きは次のようになります。

  • 重力が止まります(縦の速度も打ち消されるので、はしごの途中で静止できます)。
  • 横方向には動きません。中心の X 座標が、つかまったはしごの列の中心へロックされます。はしごの端にぶら下がって登るような見え方を防ぐためです。
  • 上入力で登り、下入力で降ります。
  • ほかのステートへ遷移してこのアクションが外れると、はしご状態は自動的に解除されます。解除用のアクションを置く必要はありません。
  • 同じフレームのうちに、「はしごにつかまる」を置いた別のステートへ遷移した場合は、はしごから離れずにそのまま続きます(よじ登り用のステートを分けるときなど)。

登るキー / 降りるキーを指定する理由

サイドビューで移動設定の上下キーを有効にすると、はしごの外でも上下キーで上下に動けてしまいます。かといって上下キーを無効にすると、はしごを登れなくなります。

このようなときは、移動設定の上下キーは無効のままにして、「はしごにつかまる」の「登るキー」「降りるキー」に上下のキーを指定してください。はしごの上でだけ上下に動けるようになります。

移動設定の「上下の移動量」を 0 にする方法は使わないでください。「自身の設定値を参照」を速度に使うアクション(自身をノックバック、表示方向へ移動、オブジェクトを移動)の上下方向の動きまで止まってしまいます。

ビジュアルスクリプトの組み方

最小構成は 3 つのステートです。

  1. 通常(立ち・歩き)のステート
  2. はしごのステート(「はしごにつかまる」を置く)
  3. ジャンプや落下のステート

遷移条件の例は次のとおりです。

  • 通常 → はしご: 「はしごタイルに重なっている」+ 上方向の入力(すべての条件を満たす)
  • はしご → 通常: 「はしごタイルに重なっている」の反転(はしごから外れた)
  • はしご → ジャンプ: ジャンプボタンの入力
  • はしご → 通常(降り切った): 「衝突可能なものと接触(下)」+ 下方向の入力(すべての条件を満たす)

判定位置の既定は「縦の中心線のどこか」です。ジャンプで飛びつくはしごでも、頭が届けばつかまれます。

遷移の「切り替え条件」は、既定の「いずれかの条件を満たす」のままだと、入力だけで遷移してしまいます(はしごの無いところで上キーを押しただけで、はしごのステートへ入ります)。入力と条件を組み合わせるリンクは、「すべての条件を満たす」にしてください。

降り切ったときの着地は、「衝突可能なものと接触(下)」に下方向の入力を組み合わせてください。地面からつかまった直後の 1 回だけ、足元がまだ地面に触れている扱いになるため、接触だけを条件にすると、登り始めた瞬間に着地へ戻ってしまいます。

はしご中は横に動かないため、「はしごから横へ離れる」を作りたい場合は、横入力を条件にして通常のステートへ遷移させてください。

はしごの上に立つ

はしごを登りきって上に立つ、上に立った状態から下りてはしごにつかまる、という動きの組み方です。

準備

  • はしごタイルに「はしごの上端に乗れる」を設定します。
  • 「はしごにつかまる」の「はしごの上に立つ」を有効にします。

遷移条件

  • 通常 → はしご(下から): 「はしごタイルに重なっている(判定位置: 縦の中心線のどこか)」+ 上方向の入力(すべての条件を満たす)
  • 通常 → はしご(上端から降りる): 「はしごタイルに重なっている(判定位置: すぐ下にはしごがある)」+ 下方向の入力(すべての条件を満たす)
  • はしご → 通常: 「はしごタイルに重なっている(判定位置: 縦の中心線のどこか)」の反転
  • はしご → 通常(降り切った): 「衝突可能なものと接触(下)」+ 下方向の入力(すべての条件を満たす)

はしごから離れる条件は、判定位置を既定の「縦の中心線のどこか」のまま使ってください。「オブジェクトの中心」にすると、中心が上端を抜けた時点で離れるため、床の上へ一瞬で持ち上げられ(体の半分ほど)、上端の床の上からは降りられなくなります(つかまった直後に離れる条件が成立するため)。

動き

  • 登りきると、足元が上端を越えたところで床に乗り、通常のステートへ戻ります。
  • 上端の床の上で下を押すと、床をすり抜けてはしごにつかまり、そのまま降りていきます。
  • はしごの途中にすり抜けプラットフォームがある場合、降りてくるといったんその上に立ちます。そこで上端から降りるときと同じ入口(「すぐ下にはしごがある」+ 下入力)ではしごにつかまると、床をすり抜けてそのまま降りていけます。
  • 天井や壁があって体が収まらない場所では、上に乗せたり、下ろしたりしません。

よじ登りのアニメーションを入れる

はしご →「よじ登り」ステート → 通常、とつなぎます。

  • はしご → よじ登り: 「はしごタイルに重なっている(判定位置: オブジェクトの中心)」の反転(中心が上端を抜けた)
  • よじ登り → 通常: 「はしごタイルに重なっている(判定位置: 縦の中心線のどこか)」の反転

「よじ登り」ステートにも「はしごにつかまる」を同じ設定で置き、よじ登りのアニメーションを再生させてください。体が上がっていく動きに合わせてアニメーションが流れます。よじ登りの間も、上キーを押し続けないと登りません。

実用例

上下に登り降りできるはしご

  • はしごにするタイルに「タイル効果」→「重なり」→「はしご」を設定します。
  • プレイヤーに「はしご」ステートを作り、「はしごにつかまる」を置いて、はしごを登る速さを 100 前後にします。
  • 通常ステートから「はしごタイルに重なっている + 上入力」(すべての条件を満たす)で遷移し、「衝突可能なものと接触(下)+ 下入力」で通常ステートへ戻します。

はしごから飛び降りる

  • 「はしご」ステートに、ジャンプボタンの入力条件からジャンプのステートへの遷移を追加します。
  • はしご状態はステートを抜けた時点で解除されるため、ジャンプ側で速度を与えれば、そのまま飛び降りられます。

はしごを登りきって上に立つ

  • 「はしごの上に立つ」の章の設定をします。上端に床を置く必要はありません。

注意点

  • 「衝突判定パターン」が「接触」のタイルは、はしごとして検知されません。必ず「重なり」にしてください。タイルに描いた当たり判定の形は、「重なり」にしても残ります。
  • 「縦の中心線のどこか」「オブジェクトの中心」「すぐ下にはしごがある」は、横方向に幅のある判定ではありません。はしごの列の真上に中心が来ていないと検知されません。端にかすっただけでつかまりたい場合は「壁判定のどこか」を使ってください。
  • ロックされる X 座標は、つかまった瞬間のはしご列の中心で決まります。つかまったまま別の列へ移ることはできません。列を変えたいときは、いったんはしごを離れてからつかまり直す形にしてください。
  • はしごにつかまっている間は横方向の移動が止まります。横入力で離れる動きが必要な場合は、遷移条件を作ってください。
  • はしごにつかまっている間は「足場」として記録されません。クイックリスタートの「最後に接地した足場へ戻る」では、はしごの位置には戻りません。
  • はしごタイルの情報が取れなかった場合は、タイルのグリッドに合わせた位置へ吸着します(タイルの原点が揃っている前提の代替動作です)。
  • 上端の床をすり抜けている間(下から登って通り抜けるとき、上端から降りるとき)は、その床は接触の判定から外れます。自分で重ねて置いたすり抜け床(PassThroughPlatform2D)も同じ扱いです。