点と点の衝突
点と点の衝突は非常に単純で、2つの点の座標を比較し、一致するかどうかを調べます。
計算方法
点Aと点Bがあり、それぞれの座標を以下の通りとした場合
- A$(x1, y1)$
- B$(x2, y2)$
$x1 = x2$ かつ $y1 = y2$であれば、2つの点は衝突していると言えます。
解説
点と点の衝突に関しては、この程度の話しかないのですが、実際のところ、点の座標が小数点以下含めて完全に一致するということはほぼおこりません。
さらにコンピューターには小数点誤差というものが存在するため、一見一致するような数値であっても一致しないという事が往々にして起こります。
このように動きを滑らかにすると見た目上は衝突しているように見えますが、座標が完全一致せずに衝突していないという判定になってしまいます。
この問題を回避するには、衝突判定の際に座標が完全に一致するかどうかではなく、ある程度近かったら当たった事にするというような対応が必要になります。
サンプルコード
function intercect(p1:Vector2, p2:Vector2)
{
return (p1.x === p2.x && p1.y === p2.y);
}