У меня есть камера, высоту звука которой я хочу ограничить, как в большинстве игр от первого лица. В этом случае камера - это отдельный игровой объект, принадлежащий игроку. Вот что у меня: using System ....

-2
Cynthius 17 Янв 2021 в 22:30

1 ответ

Лучший ответ

Ваш код создает пустой GameObject под названием view. Этому GameObject не назначен прикрепленный компонент Camera. Он также не связан с какими-либо другими GameObject. В результате кажется, что вы пытаетесь манипулировать положением пустого GameObject.

В документации Unity предлагается избегать прямого манипулирования localEulerAngles из-за их непредсказуемого поведения. Вместо этого рекомендуется использовать Quaternions, если вы должны изменить localEulerAngles.

Вы применяете Transform.Rotate в своей функции Update () , одновременно используя Transform.localEulerAngles.Set. Два разных способа установки вращения объекта.

Следующий код можно применить к сценарию, установленному как компонент Camera. Или изменен, если вы хотите манипулировать преобразованием дочернего GameObject. Обратите внимание, что ваш скрипт не обрабатывает вращение камеры вокруг оси X (влево - вправо), я предположил, что это ваша предполагаемая функциональность, и исключил ее из кода:

[Header("Inspector Attributes")]
[SerializeField] private float lookSensitivity = 100.0F;
[SerializeField] private float yAxisClampDegrees = 90.0F;

float yRotation;

void Update()
{
    float mouseY = Input.GetAxis("Mouse Y") * lookSensitivity * Time.deltaTime;

    yRotation -= mouseY;
    yRotation = Mathf.Clamp(yRotation, -yAxisClampDegrees, yAxisClampDegrees);

    transform.localRotation = Quaternion.Euler(yRotation, 0, 0);
}
0
UnityUser 17 Янв 2021 в 23:50