JavaScript HTML5 холст обнаружение столкновений - PullRequest
2 голосов
/ 31 августа 2010

Я работаю над созданием игры air hockey с использованием HTML5 canvas и JavaScript. Я получил довольно далеко, но обнаружение столкновения молотка и мяча поставило меня в тупик. Я попытался использовать расстояние между двумя кругами и расстояние в квадрате (чтобы сохранить процессор, обходя квадратный корень). Я не могу понять, почему столкновение не обнаруживается.

Вот что у меня есть: http://austin.99k.org/z_Archive/Air_Hockey/

Пожалуйста, посмотрите и помогите мне разобраться. Исходные файлы несколько прокомментированы.

1 Ответ

3 голосов
/ 31 августа 2010

Ваша функция попадания неверна. Вы должны просто вычислить расстояние между двумя точками (что вы делаете правильно) и сравнить его с минимальным расстоянием между молотком и мячом.

Например,

return distance_squared < radii_squared

Вы фактически (эффективно) делаете:

return -COLLIDEDISTANCE < radii_squared - distance_squared && radii_squared - distance_squared < COLLIDEDISTANCE

Для которого требуется, чтобы любое попадание находилось в пределах 2 единиц от края, но числа, которые я видел, проходя через hit (), подразумевают, что у вас есть масштабный коэффициент, который делает единицу меньше одного пикселя.

...