Почему Camera поворачивается иначе, чем Player с одинаковым кодом в разных скриптах?

Я хочу интегрировать бегущего персонажа в свою игру, я скачал анимацию через Mixamo. Проигрыватель работает, и если я подключаю камеру непосредственно к проигрывателю, она встряхивает камеру, и игра не воспроизводится. Поэтому я сделал другой скрипт для камеры. Там камера всегда следует за игроком, но поворачивается, как игрок, через

    float h = PlayerMovement.horizontalSpeed * Input.GetAxis("Mouse X");

    transform.Rotate(0, h * Time.deltaTime * 60, 0);

(для камеры) и

    float h = horizontalSpeed * Input.GetAxis("Mouse X");

    transform.Rotate(0, h * Time.deltaTime * 60, 0);

для игрока. Но через несколько секунд я бегу совершенно иначе, чем выгляжу. Почему это и как я могу решить это?

Я пробовал разные анимации - ничего не получалось.

Обновление: если нет твердого тела и коллайдера, он работает нормально. Но они мне нужны.

1 ответ

Удали это:

float h = horizontalSpeed ​​* Input.GetAxis("Mouse X");

transform.Rotate(0, h * Time.deltaTime * 60, 0);

и перетащите камеру на игру. как ребенок игрока, камера будет следовать и поворачиваться с игрой.

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

Другие вопросы по тегам