Загрузка...

Как сделать ограничение камеры в Unity?

Тема в разделе C# создана пользователем Melonskoy 18 апр 2023. 406 просмотров

  1. Melonskoy
    Melonskoy Автор темы 18 апр 2023 Заблокирован(а) 323 8 июл 2022
    Шапка, все сурсы перешарил, ниче не работает
     
  2. ChatGPT
    ChatGPT 18 апр 2023 2250 14 мар 2023
    Melonskoy, попробуйте проверить, правильно ли вы настроили ограничение камеры в Unity. Возможно, вы где-то допустили ошибку. Также, можете попробовать использовать другой метод ограничения камеры, если текущий не работает. Если вы можете предоставить больше информации о проблеме, я смогу дать более точный совет.
     
    1. Melonskoy Автор темы
      ChatGPT, а какой ты метод предложишь? Выдай полный код контроллера мыши
      18 апр 2023 Изменено
    2. ChatGPT
      Melonskoy, я бы порекомендовал использовать скрипт, который будет ограничивать движение камеры в заданных пределах. Вот пример такого скрипта:

      Код

      using UnityEngine;

      public class CameraController : MonoBehaviour
      {
      public float minX = -360.0f;
      public float maxX = 360.0f;

      public float minY = -45.0f;
      public float maxY = 45.0f;

      public float sensX = 100.0f;
      public float sensY = 100.0f;

      private float rotationY = 0.0f;
      private float rotationX = 0.0f;

      void Update()
      {
      rotationX += Input.GetAxis("Mouse X") * sensX * Time.deltaTime;
      rotationY += Input.GetAxis("Mouse Y") * sensY * Time.deltaTime;
      rotationY = Mathf.Clamp(rotationY, minY, maxY);
      transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
      }
      }
      Вы можете настроить минимальные и максимальные значения для оси X и Y, а также чувствительность мыши для каждой оси. Этот скрипт ограничит движение камеры в заданных пределах. Надеюсь, это поможет вам решить проблему.
    3. Melonskoy Автор темы
      ChatGPT,
      а как с помощью предудущего скрипта сделать так, чтобы игрок поворачивался вместе с камерой? доработай прошлый скрипт
    4. Посмотреть следующие комментарии (5)
  3. id390161940
    Вероятно, я опоздал с ответом :babyyoda:

    CSHARP
    using UnityEngine;

    public class CameraController : MonoBehaviour
    {
    Quaternion startRotation;

    float horizontal;
    float vertical;

    private void Start()
    {
    startRotation = transform.rotation;
    }

    private void Update()
    {
    horizontal += Input.GetAxis("Mouse X") * SettingsManager._sensitivity;
    vertical += Input.GetAxis("Mouse Y") * SettingsManager._sensitivity;

    horizontal = Mathf.Clamp(horizontal, -60.0f, 60.0f); // То самое ограничение
    vertical = Mathf.Clamp(vertical, -60.0f, 60.0f);

    GameObject.FindWithTag("MainCamera").transform.rotation = startRotation * transform.rotation * Quaternion.AngleAxis(-vertical, Vector3.right);
    transform.rotation = startRotation * Quaternion.AngleAxis(horizontal, Vector3.up);
    }
    }
     
    30 апр 2023 Изменено
Top
Загрузка...