アクションゲームを作る時に、足が着地してないのにシッポが引っ掛かって、
上の図のようにプレイヤーが空中に浮くことはないですか?
これでは不自然なので、きちんと足で地面に着地するようにしたいですよね。
今回は、そんな問題を解決するヒットボックスの説明をしますね。
ヒットボックスとはなにか?
当たり判定の時にプレイヤーのコスチュームのままだと、上の図のようにシッポで身体を支えたり、
下図のように炎が少し翼にあたっただけでもあたり判定となってしまいます。
このような不自然な状態を避けるために、当たり判定のために四角形のコスチュームを準備します。
この当たり判定用のコスチュームをヒットボックスと呼んでいます。
グリフォンの大きさに近いボックスだったり、シッポや翼を失くしたコスチュームでも良いです。
2通りあるヒットボックスの作り方
どのような条件で当たり判定をするかによって、ヒットボックスの作り方が2つあります。
ヒットボックスはプレイする時に画面上に表示されないようにするので、
使用するプレイヤーと全く別の形をしていても大丈夫です。
1.ヒットボックス自体(オブジェクト)に触れたことで判定をする場合
作成したコスチュームを当たり判定に使うので、判定に都合の良い形であればどんな形状でも良いです。
先ほど紹介したシッポや翼のないグリフォンもありです。
コスチュームの形(オブジェクト)そのものが、地面に触れることを当たり判定の条件にしています。
2.ヒットボックスの色に触れたことで判定をする場合
スプライトの部位にいろいろな色を付けたコスチュームをヒットボックスとして使います。
それぞれの色が地面(紫色)の色に触れることを当たり判定の条件にしています。
ヒットボックスの使い方
具体的にヒットボックスをどのように使うかの説明をしますね。
ヒットボックスの使い方にも、ダミーのスプライトとして使う方法とプレイヤーのコスチュームとして使う方法と2通りあります。
ダミーのスプライトとしてヒットボックスを使う時
ヒットボックスを別のスプライトとして、プレイヤーの動きをするスクリプトを作成します。
このヒットボックスは画面上では見えないようにして、プレイヤーとなるCatのスプライトは”ヒットボックスに行く”とすれば、
Catはヒットボックスの動き通りに動き、当たり判定にも同様に反応します。
<Catのスクリプト>
<ダミーヒットボックスのスクリプト>
ここで大事なポイントは、ダミーのヒットボックスが画面に表示されないようにするために、
”幽霊の効果を100にする”のブロックをつかうことです。
色判定のヒットボックスを使う時も同じですか?
色判定のヒットボックスは隠すにしてください。スプライトが隠れていても色の当たり判定は有効ですからね。
詳しく知りたい方は↓↓↓
〇に触れた 〇色に触れた のブロックの使い方の違いについての説明です。 当たり判定の条件とするブロックの選択を間違うと、スプライトを隠したにもかかわらず、他のスプライトにガンガン当たっているという判定になりますので注意が必要です。
プレイヤーのコスチュームとしてヒットボックスを使用する場合
先ほどはヒットボックスを別のスプライトとしましたが、今度はプレイヤーのコスチュームの一つとして
ヒットボックスを使う方法をご紹介します。
ねこのプレイヤーは左側、ねこ2のプライヤーは右側のコスチュームを持っています。
どちらもコスチューム3がヒットボックスになっています。
<オブジェクトでの当たり判定のプレイヤーねこ1のスクリプト>
”ずっと” のブロックの中に複数のコスチュームをいれても、画面に表示されるのは一番下のコスチュームだけになります。
”〇回くりかえす” や ”〇秒待つ” が間に入らない限り、他のコスチュームは見えません。
*定義ブロックでアニメーションもスクリプトを作成したのですが、動きが悪かったのでメッセージにしています。
<色での当たり判定のプレイヤーねこ2のスクリプト>
コスチュームは一番下のブロックが優先されるようで、”重力落下” や ”左右移動” のメッセージが下になると、コスチュームがコスチューム1に固定されてしまってアニメーションが動かない。
試しにメッセージを送る順番を変えて動きがどのように変わるか確認してみてください。
ジャンプや横移動のプログラムは簡単なものを使用しているので、プレイする時に地面にめり込んだりすることがあるかもしれません。
今回はヒットボックスについての説明をするために、他の部分(ジャンプなど)のプログラムを簡単にしています。