Я пытаюсь создать простую 3D-игру и нужно ограничить игрока в пределах игрового мира. Когда игрок поражает стороны света, я хочу, чтобы корабль игрока слегка отскочил.
По сути, я пытаюсь поймать игрока в коробку и не дать ему уйти через боковые стороны ...
Мне удалось определить границы игрового мира как совокупность самолетов с нормалями и расстояниями от начала координат. У игрока сферическая ограничивающая сфера, и благодаря этому сайту http://www.gamasutra.com/view/feature/3383/simple_intersection_tests_for_games.php мне удалось обнаружить столкновения.
Теперь я не могу понять, что делать при обнаружении столкновения. Лучшее, чем я могу управлять, - это застревание игрока в самолете, прохождение прямо через него или многократный отскок от него с очень высокой скоростью.
Здравый смысл подсказывает мне, что мне нужно рассчитать угол отражения от плоскости, используя его нормаль, и применить его к скорости игрока, однако я думаю, что мне нужно сначала посмотреть, прошел ли игрок плоскость, то есть бит, который я не могу разрабатывать.