Нужен контроллер персонажа Unity, чтобы делать крутые повороты на 90 градусов и не скользить при повороте
Я использую контроллер от первого лица для движения своих персонажей. При нажатии клавиши со стрелкой влево я бы хотел, чтобы персонаж мгновенно повернулся на 90 градусов и продолжал двигаться вперед. В настоящее время, когда я нажимаю клавишу со стрелкой, персонаж делает крутой поворот на 90 градусов, но передний импульс, который ранее имел персонаж, изнашивается за секунду, поэтому персонаж в конечном итоге скользит в направлении, в котором он ранее двигался на короткое время.
Самый близкий пример, который я могу придумать, чтобы наглядно объяснить, что я пытаюсь сделать, это то, как персонаж резко поворачивает в Temple Run. Как работает моя игра, если бы персонаж на выступе сделал крутой левый поворот, он, вероятно, сохранил бы первоначальный импульс и соскользнул с края сразу после поворота.
Поскольку мой персонаж движется по оси x/z, мне интересно, есть ли какой-нибудь способ, возможно, поменять направленную скорость / импульс? Скорость, которую персонаж имел на оси x, будет мгновенно переключаться на z, когда он поворачивается, а другой будет установлен на ноль. Я, очевидно, открыт для любого решения, которое выполняет то, что я ищу.
Я покопался в классе CharacterMotor в контроллере от первого лица, но мне еще предстоит найти, какую часть я могу настроить для достижения этой цели.
Я был бы очень признателен за любую помощь.
Спасибо.
1 ответ
Вы можете попытаться остановить скорость Rigidbody перед поворотом.
this.rigidbody.velocity = Vector3.zero;
this.rigidbody.angularVelocity = Vector3.zero;
Если вы хотите, чтобы объект продолжал, как он это делал, вы можете попробовать поиграть с ним, сохранив текущую скорость в переменной, установив ее на 0, поверните и затем верните старую скорость (все еще вперед).
Если он работает с глобальными векторами (то есть с точки зрения мира, а не объекта), тогда вы можете попытаться уменьшить скорость, фактически заставив ее двигаться "назад". Я не могу проверить это сейчас, но в любом случае я думаю, что вам нужно сначала установить скорость на ноль, прежде чем повернуть персонажа.