C ++ Smooth player — стена — столкновение (скольжение к стене)

Я уже пытался решить проблему сглаживания
игрок — стена — столкновение, так что игрок скользит вдоль
стена.

Поэтому я попробовал следующее:

playerBox->move();
if (playerBox->intersects(wall)) {
clearMovement();
movePlayerBoxBack();
}

но если игрок касается стены, он не скользит …
Он просто останавливается (если я делаю это отдельно для W, A, S и D тоже).

Это работает только в том случае, если я установил положение игрока обратно в
положение стены он касается. Следующим образом:

player->move();
if (intersect) {
moveToWall();
}

Но это не работает, потому что для стены, связанной с
другой игрок касается больше сторон, и игрок
прыгает в угол …
Так что это работает только для одной стены …

Мой вопрос: как я могу сделать гладкое
игрок — стена — столкновение другим способом, который также работает
для стены, связанной с одним или несколькими другими.

0

Решение

Вы можете выбросить луч из игрока, посмотреть, не попадает ли он в стену. Если это действительно сталкивается, используйте нормаль вашей стены, чтобы сделать вектор, который бежит вдоль стороны в направлении, в котором движется игрок.

1

Другие решения


По вопросам рекламы [email protected]