7 способов перемещения камеры в Unity Scene View: подробное руководство

В Unity Scene View — это мощный инструмент, который позволяет разработчикам манипулировать сценами и перемещаться по ним в своих проектах. Движение камеры в режиме просмотра сцены имеет решающее значение для эффективного редактирования сцен и дизайна уровней. В этой статье мы рассмотрим различные методы перемещения камеры в представлении сцены Unity, приведя примеры кода для каждого метода. Независимо от того, являетесь ли вы новичком или опытным разработчиком, это подробное руководство поможет вам улучшить свои навыки управления камерой в Unity.

using UnityEngine;
public class CameraMovement : MonoBehaviour
{
    public float speed = 5f;
    void Update()
    {
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");
        Vector3 direction = new Vector3(horizontal, 0f, vertical);
        transform.Translate(direction * speed * Time.deltaTime);
    }
}

Метод 2: Орбита мыши
Орбита мыши позволяет вращать камеру вокруг целевой точки с помощью мыши. Вот пример:

using UnityEngine;
public class CameraOrbit : MonoBehaviour
{
    public Transform target;
    public float orbitSpeed = 10f;
    void Update()
    {
        float horizontal = Input.GetAxis("Mouse X") * orbitSpeed;
        float vertical = Input.GetAxis("Mouse Y") * orbitSpeed;
        transform.RotateAround(target.position, Vector3.up, horizontal);
        transform.RotateAround(target.position, transform.right, -vertical);
    }
}

Метод 3: Панорамирование с помощью мыши
Панорамирование с помощью мыши позволяет перемещать камеру в представлении сцены путем перетаскивания мыши. Вот пример:

using UnityEngine;
public class CameraPan : MonoBehaviour
{
    public float panSpeed = 10f;
    void Update()
    {
        if (Input.GetMouseButton(2))
        {
            float horizontal = Input.GetAxis("Mouse X") * panSpeed;
            float vertical = Input.GetAxis("Mouse Y") * panSpeed;
            Vector3 pan = new Vector3(-horizontal, 0f, -vertical);
            transform.Translate(pan * Time.deltaTime);
        }
    }
}

Метод 4: Плавное следование
Плавное следование позволяет камере плавно следовать за целевым объектом. Вот пример:

using UnityEngine;
public class SmoothFollow : MonoBehaviour
{
    public Transform target;
    public float smoothSpeed = 5f;
    void LateUpdate()
    {
        Vector3 desiredPosition = target.position;
        Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed * Time.deltaTime);
        transform.position = smoothedPosition;
    }
}

Метод 5: управление с клавиатуры
Используя элементы управления с клавиатуры, вы можете перемещать камеру в представлении сцены с помощью заранее определенных клавиш. Вот пример:

using UnityEngine;
public class CameraKeyboardControls : MonoBehaviour
{
    public float speed = 5f;
    void Update()
    {
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");
        Vector3 direction = new Vector3(horizontal, 0f, vertical);
        transform.Translate(direction * speed * Time.deltaTime);
    }
}

Метод 6: сенсорное управление (мобильное устройство)
Для мобильных платформ можно реализовать сенсорное управление для перемещения камеры. Вот пример:

using UnityEngine;
public class CameraTouchControls : MonoBehaviour
{
    public float speed = 5f;
    void Update()
    {
        if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Moved)
        {
            Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition;
            Vector3 direction = new Vector3(touchDeltaPosition.x, 0f, touchDeltaPosition.y);
            transform.Translate(direction * speed * Time.deltaTime);
        }
    }
}

Метод 7: Cinemachine
Cinemachine — это мощная система камер в Unity, обеспечивающая расширенные возможности управления камерой и кинематографические эффекты. Вот пример использования Cinemachine:

using UnityEngine;
using Cinemachine;
public class CinemachineCameraControl : MonoBehaviour
{
    public CinemachineVirtualCamera virtualCamera;
    public float speed = 5f;
    void Update()
    {
        float horizontal = Input.GetAxis("Horizontal");
        float vertical = Input.GetAxis("Vertical");
        Vector3 direction = new Vector3(horizontal, 0f, vertical);
        virtualCamera.transform.Translate(direction * speed * Time.deltaTime);
    }
}

В этой статье мы рассмотрели семь различных способов перемещения камеры в представлении сцены Unity. Эти методы варьируются от базовых переводов до продвинутых систем камер, таких как Cinemachine. В зависимости от требований вашего проекта вы можете выбрать метод, который лучше всего соответствует вашим потребностям. Экспериментируя с различными движениями камеры, вы можете добавить динамичности и интерактивности вашим сценам, улучшая общее впечатление для игроков и пользователей. Освоив эти методы управления камерой, вы получите инструменты для создания привлекательных визуальных эффектов и оптимизации процесса редактирования сцен в Unity.