Я пишу клон с прорывом (моя первая игра) и совершенно не понимаю, как выяснить, какая сторона кирпича была поражена.
У меня есть метод обнаружения столкновений, который выглядит следующим образом:
DetectCollision(Object a, Object b)
x = distance(a.x, b.x);
y = distance(a.y, b.y);
if (x is smaller than the combined width & y is smaller is than combined height {
return true;
}
return false;
Это работает совершенно нормально, но мне нужно знать сторону столкновения и местоположение относительно центра, чтобы правильно реагировать.
Я провел последние несколько дней, слоняясь вокруг, но я потерян.
источник
Вы можете использовать Vector Math, чтобы обнаружить углы между ними!
Вот краткий ответ:
Облицовка кирпичом - сложный вектор, это «начальная точка» расчета угла. и если вы хотите, чтобы вектор указывал вверх, сделайте его (0, 1), укажите влево (-1, 0), направо (1, 0), укажите вниз (0, -1). Предполагая, что вы находитесь в оси OpenGL, где вверх и вправо положительные.
Если вы не знаете, вот определения каждой используемой функции:
( https://en.wikipedia.org/wiki/Dot_product )
Ссылка: http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-2/
источник