Стоп два прямоугольника из пересекающихся
Этот маленький мир содержит человека (синий прямоугольник) и дерево (большой зеленый прямоугольник). Лицом можно управлять, нажимая клавиши вверх, вниз, влево, вправо на клавиатуре. Синий прямоугольник перемещается только при нажатии клавиш. Синий прямоугольник не должен сойти с карты (т. Е. Не должен выходить из серой области) и не должен перекрывать зеленый прямоугольник.
Я знаю о методе, чтобы предотвратить синий прямоугольник с высадки из серой области:
if (blueRect.rightEdge >= (canvas.width - 1)) {
// Don't allow going further to the right
// But allow going up, down, and to the left
}
// Check the same thing for the other sides of the grey area
То, что я не уверен в том, как предотвратить два прямоугольника из пересекающихся.
На картинке выше, как мне «отключить» движение вправо (чтобы предотвратить перекресток)? Я все равно хотел бы подняться, опуститься и уйти.
Узнайте об обнаружении столкновения? Я уверен, что есть достаточные учебники и ресурсы, которые вы можете найти, используя поисковую систему по вашему выбору. – UnholySheep
@UnholySheep. Проблема в том, что в большинстве учебных пособий показано, как обнаружить пересечения. Мне не нужно обнаруживать пересечения. Мне нужно предотвратить пересечения. – Flux
Это называется «разрешение столкновения» - это следующий шаг после обнаружения столкновения. Если вы хотите предотвратить пересечение, вам сначала нужно определить, что это произойдет, если вы переместите свой объект. – UnholySheep