第一章 操作感No.005
当たり判定
Hitbox別名 判定、ヒットボックス、やられ判定、くらい判定、攻撃判定
概要
攻撃や弾が当たったかどうかを決めるためにキャラクターや弾に持たせる見えない形。絵とは別に持つので、絵より小さくも大きくもできる。プレイヤーが攻撃を受ける側の判定を絵と同じ大きさにすると、弾が絵の端をかすめただけでやられる。絵より大きくすると、弾が絵に触れる前にやられる。
使われる場面
- 弾をよけるゲーム
- プレイヤーのやられ判定を絵より小さくし、体の中心に置く。弾が絵の端をかすめてもやられないので、弾の列の、絵より少し狭いすき間も抜けられる。
- 剣や拳で攻撃するアクション
- プレイヤーの攻撃判定を武器の絵と同じか少し大きく取り、敵のやられ判定を敵の絵いっぱいに取る。武器が敵に触れて見えたのに当たらない、ということがなくなる。
- アイテムやコインを拾う場面
- 拾う判定を絵より大きく取る。触れたように見えたのに取れない、ということがなくなり、走り抜けながらでも拾える。
- 敵の攻撃に光や煙の演出が付く場面
- 敵の攻撃判定は演出の広がりではなく、攻撃の芯に合わせる。外側の薄い光や煙に触れただけでやられると、当たっていないのにやられたと感じる。
- 大きな敵や、形が四角から外れる敵
- 体を一つの四角で囲まない。頭、胴、翼のように部位ごとに判定を分ける。翼のあいだのような絵のない所で、攻撃が当たったりプレイヤーがやられたりしなくなる。
判断基準
| こういうとき | こうする |
|---|---|
| 弾が絵の端をかすめただけでやられる | プレイヤーのやられ判定を絵より小さくする。絵の 5〜8 割から試し、弾が絵の端に少し重なってもやられないかを遊んで確かめる。 |
| 弾と体のあいだにすき間が見えるのにやられる | 判定の枠を画面に表示して確かめる。やられ判定が絵より大きければ、絵の内側に収める。丸い絵や細長い絵を囲む四角のせいで絵のない角で当たっているなら、円や部位ごとの四角に変える。 |
| 攻撃が敵に当たったように見えたのにすり抜ける | プレイヤーの攻撃判定を武器の絵と同じか少し大きくし、敵のやられ判定を絵いっぱいに取る。 |
| アイテムに触れたのに取れない | 拾う判定を絵より大きくする。 |
| 敵に触れているあいだに体力が一気に減る | 重なっているフレームの数だけ当たったことにしている。当たった弾は消す。体当たりのように消えない攻撃では、同じ相手からは一度だけ当たるようにするか、「無敵時間」を入れる。 |
| 速い弾がときどき体をすり抜ける | 1 フレームに進む距離が判定の幅と弾の直径の和を超えている。1 フレームの移動を何回かに分けて調べるか、前のフレームの位置から今の位置までの通り道で調べる。 |
| やられ判定を小さくしたら、キャラクターが壁や床にめり込むようになった | 地形とぶつかる判定まで小さくしている。地形との判定は絵の大きさのまま残し、やられ判定だけを小さくする。 |
遊んでこう感じたら
指示の例
弾が体の端をかすめただけでやられて理不尽に感じる。プレイヤーのやられ判定を絵の 7 割くらいの大きさに小さくして
弾と体のあいだにすき間があるのにやられることがある。当たり判定の枠を画面に表示できるようにして、やられ判定が絵からはみ出していないか確かめて
剣が敵に触れているように見えるのにダメージが入らないことがある。剣の攻撃判定を剣の絵より 1 割くらい大きくして
コインに触れたのに取れないことがある。コインを拾う当たり判定を絵の 1.5 倍くらいに広げて
速い弾がときどき体をすり抜ける。弾の当たり判定は 1 フレームの移動を 4 回くらいに分けて調べるようにして
詳細
絵と判定を別に持つ理由
キャラクターや弾の絵は細かい形をしていて、動きに合わせて変わる。当たったかどうかを絵の形そのもので調べると、計算が重くなるうえ、絵を描き直すたびに当たり方まで変わる。そこで、四角や円のような単純な形を絵とは別に持たせ、その形どうしが重なったら当たったことにする。この形を当たり判定と呼び、略して「判定」ともいう。絵とは別に持つので、大きさと位置を絵に合わせるのではなく遊びやすさに合わせて決められる。
当たり判定は役割で分けて持つ。攻撃する側に持たせるのが攻撃判定、攻撃を受ける側に持たせるのがやられ判定(くらい判定)である。攻撃判定がやられ判定に重なったときに攻撃が当たる。足場に立ったり壁で止まったりするための、地形とぶつかる判定も別に持つ。やられ判定を小さくしても、地形との判定は絵の大きさのまま残す。地形との判定まで小さくすると、絵が壁や床にめり込んで見える。
プレイヤーのやられ判定を小さくする理由
やられ判定を絵と同じ大きさにすると、弾が絵の端に少し重なっただけでやられる。デモの 1 回目では、弾が絵の下の端に絵の高さの 1 割あまり重なる。弾の直径の 7 割近くは体の外を通っているが、上の段はここでやられる。
当たったかどうかを見た目で決めにくい場面では、プレイヤーに有利なほうに決める。やられ判定が絵より小さいことにプレイヤーが気づくのは、弾が絵に重なったのにやられなかった場面だけである。その場面ではプレイヤーは得をしている。反対に、判定が絵と同じか大きいと、よけたつもりの弾でやられる場面が出る。その場面はプレイヤーには理不尽に見える。
判定を小さくすると、弾の列の、絵より少し狭いすき間も抜けられる。デモの 2 回目のすき間は弾の縁どうしの間が絵の高さの 4 分の 3 しかない。上の段はすき間の上下の弾に当たり、下の段は抜けられる。
判定の大きさの目安
やられ判定を絵の幅と高さの p 倍の四角にすると、判定の縁は絵の縁から絵の大きさの (1 − p) ÷ 2 だけ内側に入る。8 割なら 1 割、5 割なら 2 割 5 分だけ内側に入り、弾がそれより浅く絵に重なってもやられない。デモの 1 回目と 2 回目の弾はどちらも絵に 1 割あまり(12.5%)重なるので、下の段の判定を 7 割以下にするとよけられ、8 割以上にすると当たる。3 回目のように弾が体の中ほどに来たときは、判定を 2 割まで小さくしても当たるので、弾をよけなくてよくなるわけではない。
弾をよけるゲームでは、絵の 5〜8 割から試し、弾がかすめる場面を遊んで決める。弾が画面を埋めるほど多いゲームでは、判定をさらに小さくし、判定の位置を絵の上に印で示す。判定が絵よりずっと小さいと、どこまで弾に寄ってよいかを絵からは読み取れないからである。
判定を絵より大きくすると、弾が絵に触れる前にやられる。デモの下の段を 120% 以上にすると、3 回のどの試行でも弾が絵に触れる前に当たる。絵の周りに透明な余白がある画像で、画像の大きさをそのまま判定にしたときも、判定は見えている絵より大きくなる。
判定の位置は絵の体の中心に合わせる。判定が絵の上寄りにずれていると、上を通る弾には絵に触れる前に当たり、下を通る弾には絵が重なるまで寄れる。そのため、よけやすさが向きによって変わる。
ほかの判定の大きさ
プレイヤーに有利なほうに決める考え方は攻撃判定、敵のやられ判定、拾う物の判定にも当てはまる。
- プレイヤーの攻撃判定は武器の絵と同じか少し大きくする。
- 敵のやられ判定は敵の絵いっぱいか少し大きく取る。
- 敵の攻撃判定と敵の弾は絵と同じか少し小さくし、光や煙の演出の外側では当てない。
- アイテムを拾う判定は絵より大きくする。
ただし、プレイヤーの攻撃判定を大きくしすぎると武器が届いていない敵にも当たり、攻撃の届く距離を絵から読み取れなくなる。大きくするのは、武器の絵が敵に触れて見える場面で確実に当たる程度にとどめる。
判定の形
四角の判定は辺を画面の縦と横にそろえておけば、重なったかどうかを簡単に調べられる。ただし、丸い絵や細長い絵を四角で囲むと、絵のない角が残る。丸い絵を囲む正方形では、円の外側の四隅が正方形の約 2 割を占め、そこに触れた弾でも当たる。
円の判定は中心どうしの距離が半径の和より短ければ重なっている。向きが変わっても形が変わらないので、丸い絵や回転する物に使う。
人の形や大きな敵は頭、胴、脚のように部位ごとの四角や円を組み合わせる。しゃがむ、腕を伸ばすのように姿勢で絵の形が大きく変わるときは、姿勢ごとに判定も変える。立ったときの判定のままだと、しゃがんだ頭の上を通る弾にも当たる。
重なっているあいだに何度も当たる問題
フレームごとに重なりを調べる作りでは、弾や敵の体が判定に重なっているあいだ毎フレーム重なりが見つかる。自動再生の弾が判定の真ん中を横切るなら、判定を絵と同じ大きさにしたとき、重なっているフレームは 12〜13 回続く。重なっているフレームごとに当たりを数えると、1 回触れただけで十数回分も当たる。デモでは判定に当たった弾をその場で消している。体当たりのように消えない攻撃では、同じ相手からは一度だけ当たるようにするか、当たった直後に「無敵時間」を入れる。
速い弾のすり抜け
フレームごとに重なりを調べる作りでは、速い弾が判定をすり抜けることがある。弾が 1 フレームに進む距離が長いと、あるフレームでは判定の手前に、次のフレームでは判定の向こうにある。どちらのフレームでも重ならない。
弾が判定の真ん中を横切るとき、重なるのは弾の中心が判定の幅と弾の直径を足した長さの範囲にあるあいだである。1 フレームに進む距離がこの長さを超えると、重なるフレームがないまま通り抜けることがある。判定の幅が 10 ピクセル、弾の直径が 8 ピクセルなら、長さは 18 ピクセルである。1 フレームに 18 ピクセルを超えて進む弾(毎秒 60 回の更新で秒速 1080 ピクセルを超える弾)はすり抜けることがある。1 フレームに 20 ピクセル進む弾なら、出る位置しだいで 10 回に 1 回すり抜ける。やられ判定を小さくするほど、この長さは短くなり、すり抜けは起きやすくなる。デモの弾が 1 フレームに進む距離は絵の幅の 1 割前後で、判定を 2 割にしたときの長さ(絵の幅の 6 割)より短い。そのため、判定の真ん中を横切る弾はすり抜けない。
すり抜けを防ぐには、1 フレームの移動を何回かに分け、そのたびに重なりを調べる。分ける回数は、1 回に進む距離がこの長さより十分に短くなるように決める。判定の端をかすめる弾は重なる範囲がこの長さより短いからである。もう一つの方法は、前のフレームの位置から今の位置までの線分が判定を通るかどうかで調べることである。
判定を見えるようにする
判定は画面に出ないので、大きさや位置がずれていても、遊んでいるだけでは気づきにくい。開発中は判定の枠を絵に重ねて表示できるようにしておき、どこで当たったかを確かめる。デモの「判定の枠を表示」を切ると、判定が見えないときの見え方と比べられる。