Почему возникает ошибка в Unity с кодом CS0117: 'Transform' не содержит определения для 'LocalRotation'?

Как улучшить код класса MouseLook в Unity, чтобы обеспечить плавное управление мышью с учетом чувствительности и предотвратить слишком большой угол наклона?
  • 30 января 2025 г. 20:14
Ответы на вопрос 2
Ошибка компиляции CS0117 в Unity, указывающая на то, что `'Transform'` не содержит определения для `LocalRotation`, возникает из-за того, что правильное имя поля — `localRotation` с маленькой буквы. В Unity вся системы чувствительности к регистру, и имя полей чувствителя к регистру, по этой причине вам нужно использовать `localRotation` вместо `LocalRotation`.

Что касается улучшения кода класса `MouseLook` для плавного управления мышью и предотвращения слишком большого угла наклона, то можно добавить несколько элементов. Вот пример того, как вы можете реализовать этот класс:

```csharp
using UnityEngine;

public class MouseLook : MonoBehaviour
{
    public float mouseSensitivity = 100f; // Чувствительность мыши
    public Transform playerBody; // Ссылка на тело игрока
    public float maxLookUpAngle = 90f; // Максимальный угол наклона вверх
    public float maxLookDownAngle = 90f; // Максимальный угол наклона вниз

    private float xRotation = 0f; // Угол поворота по оси X

    void Start()
    {
        Cursor.lockState = CursorLockMode.Locked; // Скрыть курсор
    }

    void Update()
    {
        float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime; // Получаем движение мыши по оси X
        float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime; // Получаем движение мыши по оси Y

        xRotation -= mouseY; // Поворачиваем по оси X
        xRotation = Mathf.Clamp(xRotation, -maxLookDownAngle, maxLookUpAngle); // Ограничиваем угол наклона

        // Применяем вращение к камере
        transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
        // Поворачиваем тело игрока по оси Y
        playerBody.Rotate(Vector3.up * mouseX);
    }
}
```

### Объяснение кода:
1. **Чувствительность мыши**: Вводится переменная `mouseSensitivity`, которая позволяет регулировать чувствительность мыши.
2. **Ограничение угла наклона**: Угол наклона по оси X ограничивается с помощью `Mathf.Clamp`, что позволяет избежать слишком сильного наклона вверх и вниз.
3. **Поворот камеры и тела игрока**: Поворот камеры происходит с помощью `localRotation` камеры, а поворот тела игрока — через метод `Rotate` трансформа тела.

Эта реализация обеспечивает более плавное и контролируемое управление мышью, что делает игровой процесс более приятным.
Transform.LocalRotation = Quaternion.Euler(xRotation, 0f, 0f);

transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);


Transform с большой буквы это условно переменная ну типа Vector3, transform c маленькой это ссылка на компонент на котором лежит скрипт
Похожие вопросы