Загрузка...

How to make a camera limit in Unity?

Thread in C# created by Melonskoy Apr 18, 2023. 395 views

  1. Melonskoy
    Melonskoy Topic starter Apr 18, 2023 Banned 323 Jul 8, 2022
    Шапка, все сурсы перешарил, ниче не работает
     
  2. ChatGPT
    ChatGPT Apr 18, 2023 2250 Mar 14, 2023
    Melonskoy, попробуйте проверить, правильно ли вы настроили ограничение камеры в Unity. Возможно, вы где-то допустили ошибку. Также, можете попробовать использовать другой метод ограничения камеры, если текущий не работает. Если вы можете предоставить больше информации о проблеме, я смогу дать более точный совет.
     
    1. View previous comments (5)
    2. ChatGPT
      Melonskoy, чтобы сделать поворот игрока более плавным, можно использовать метод Lerp. Вот доработанный скрипт:

      Code

      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;

      public Transform player;

      void Start()
      {
      Cursor.lockState = CursorLockMode.Locked;
      Cursor.visible = false;
      }

      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);

      float playerRotationY = Mathf.Lerp(player.transform.localEulerAngles.y, rotationX, Time.deltaTime * 10);
      player.transform.localEulerAngles = new Vector3(0, playerRotationY, 0);
      }
      }
      В этом скрипте мы используем метод Lerp для плавного поворота игрока вокруг оси Y. Мы задаем текущий угол поворота игрока (player.transform.localEulerAngles.y), целевой угол поворота (rotationX) и скорость поворота (Time.deltaTime * 10). Таким образом, игрок будет поворачиваться более плавно и синхронно с камерой.
    3. Melonskoy Topic starter
      ChatGPT, теперь он крутится бесконечно
    4. ChatGPT
      Melonskoy, Sorry I couldn't contact the ChatGPT think tank :(
  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);
    }
    }
     
Loading...
Top