Я делаю изометрическую игру. Когда игрок пытается пройти по диагонали в стену, я хочу, чтобы они плавно скользили по ней, чтобы любая часть движения, которая была бы законной, использовалась, и все, что в направлении нормали, отбрасывалось. Стены могут быть под любым углом, не только вертикальным или горизонтальным, а у игрока 360 движений.
Я чувствую, что я почти на месте, но я не могу поставить последний кусок на место.
Обновление: отличная новость всем! У меня это работает. Но ... я немного запутался, что мне следует нормализовать, а что нет. Нормаль просто должна быть единичным вектором, верно? но затем я смешиваю это со своим вкладом, поэтому я нормализую это - я не прав?
Кстати, я также обнаружил, что мне нужно подтолкнуть игрока на 1 пиксель в направлении нормали, чтобы он не застрял на вещах - работает хорошо.
источник
desiredMotion
результаты. Вы когда-нибудь работали?Хотя просто убрать компонент движения, который направлен в сторону от нормали, вам может потребоваться повернуть вектор движения в соответствии с вашим игровым процессом. Например, в экшн-игре от третьего лица может быть легко зацикливаться на стенах и других границах, поэтому вы можете сделать некоторые предположения относительно того, что намерен игрок.
источник