Я уже пытался решить проблему сглаживания
игрок — стена — столкновение, так что игрок скользит вдоль
стена.
Поэтому я попробовал следующее:
playerBox->move();
if (playerBox->intersects(wall)) {
clearMovement();
movePlayerBoxBack();
}
но если игрок касается стены, он не скользит …
Он просто останавливается (если я делаю это отдельно для W, A, S и D тоже).
Это работает только в том случае, если я установил положение игрока обратно в
положение стены он касается. Следующим образом:
player->move();
if (intersect) {
moveToWall();
}
Но это не работает, потому что для стены, связанной с
другой игрок касается больше сторон, и игрок
прыгает в угол …
Так что это работает только для одной стены …
Мой вопрос: как я могу сделать гладкое
игрок — стена — столкновение другим способом, который также работает
для стены, связанной с одним или несколькими другими.
Вы можете выбросить луч из игрока, посмотреть, не попадает ли он в стену. Если это действительно сталкивается, используйте нормаль вашей стены, чтобы сделать вектор, который бежит вдоль стороны в направлении, в котором движется игрок.