Это школьный проект. У меня есть большой куб, который похож на PL anet. У меня есть маленький кубик, который может двигаться с любой стороны куба pl anet. Игрок автоматически перемещается вперед по своей локальной оси z, и я поворачиваю его на 90 или -90 градусов для перемещения влево или вправо, но игрок может управлять им, как будто это движение вверх-вниз-влево-вправо (сделал сценарий, чтобы они не нужно вращать куб с помощью 2 клавиш). Это похоже на игру Tron, поэтому, если я нажимаю клавишу «вверх», я не могу нажать сразу, потому что я оставляю след, поэтому мне приходится нажимать левую или правую клавиши. У меня проблема с движением камеры. Камера следует за маленьким кубиком сверху, но я хочу, чтобы он немного наклонился, когда маленький игрок с кубиками приближается к краю стороны, поэтому он позволяет мне видеть другую сторону - там, где я планирую go.
У меня есть сценарий, в котором я использую центр куба pl anet и центр игрока в качестве вектора направления и умножаю его на расстояние от камеры до игрока.
Vector3 direction = (target.position - center.position).normalized;
transform.position = target.position + direction * distance;
Тогда я Направьте вектор вперед моей камеры в направлении куба игрока. Я попробовал два кода, но ни один из них не работал идеально. Сначала я попытался повернуть камеру с помощью:
transform.rotation = Quaternion.LookRotation(-direction);
Показано в видео . Проблема заключается в том, что, поскольку я не сообщаю программе векторы «вверх» и «вправо» (я думаю), она устанавливает для себя случайные числа, поэтому камера иногда делает свое дело, как пируэт.
Далее я попробовал это:
Quaternion rot = Quaternion.FromToRotation(transform.forward, -direction);
transform.Rotate(rot.eulerAngles, Space.World);
Показано в видео . Это почти хорошо, но когда маленький кубик движется, камера начинает слегка поворачиваться, и становится все хуже и хуже.
У вас есть какие-нибудь идеи, как я могу заставить его работать? Я надеюсь, вы понимаете, чего я хотел бы достичь. Я пытаюсь настроить камеру так, чтобы она всегда показывала, что, когда я нажимаю Вверх, мой куб движется вверх, когда я нажимаю Вправо, мой куб всегда движется вправо и т. Д. c. и когда я достигаю края моей стороны, камера немного наклоняется к той стороне, к которой я двигаюсь.