Приближение камеры с помощью колёсика мышки
Нужно реализовать приближение камеры с помощью колёсика мышки до определённого уровня, но я не могу понять, как это сделать. Что мне нужно добавить в мой скрипт?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraMove : MonoBehaviour
{
public float horizontalInput;
public float verticalInput;
private float speed = 30.0f;
void Update()
{
horizontalInput = Input.GetAxis("HorizontalUI");
verticalInput = Input.GetAxis("VerticalUI");
transform.Translate(Vector3.forward * verticalInput * speed * Time.deltaTime);
transform.Translate(Vector3.right * horizontalInput * speed * Time.deltaTime);
}
}
Ответы (1 шт):
Автор решения: Максим Фисман
→ Ссылка
Предполагая, что камера ортографическая (2Д), ее можно менять с помощью соответствующего свойства:
public float ZoomSpeed;
private Camera MainCamera;
private void Start () {
MainCamera = GetComponent<Camera>();
}
private void Update () {
if (Input.mouseScrollDelta.y != 0)
mainCamera.ortographicSize += Input.mouseScrollDelta * ZoomSpeed;
}
Если же камера "перспективная" (3Д), то ее можно приближать вашим способом (это именно приближение камеры, а не изменение угла обзора, как в первом случае) методов Translate.
Используемые функции и свойства:
- Input.mouseScrollDelta(Vector2) - изменение поворота колеса мыши. Берем y, то есть вращение по вертикали. Можно брать и по x для горизонтального вращения колесика:
Modern macOS uses double finger movement up and down on the trackpad to emulate center scrolling. - Camera.ortigraphicSize - полуразмер камеры (для ортографического режима).
- transform.Translate(Vector3 translation) - передвигает объект в направлении указанном вектором translation на расстояние, равное модулю этого вектора.