Aquí vamos a aprender algo muy sencillo hacer Zoom con la rueda del botón en nuestro juego.
Aquí tenemos un mapa en Unity2D, en mi caso es un juego educativo que estoy creando donde el Zoom mediante la rueda del ratón, me alejo y me acercó de dichas imágenes.
Aquí tenemos la imagen de una rana o un sapo lo que vamos a hacer es ir a nuestra cámara de Unity y vamos a crear el siguiente Script
using System.Collections; using System.Collections.Generic; using UnityEngine; public class zoom2D : MonoBehaviour { private float Tamaño; private bool Desplazar; private float Xmover; private float Ymover; private Vector3 mousePosition; public float VelocidaddelZoom = 0.1f; void Start() { Tamaño = Camera.main.orthographicSize; } // Update is called once per frame void Update() { mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition); if (Input.GetAxis("Mouse ScrollWheel") > 0) { Tamaño -= VelocidaddelZoom; } if (Input.GetAxis("Mouse ScrollWheel") < 0) { Tamaño += VelocidaddelZoom; } Camera.main.orthographicSize = Tamaño; if (Input.GetMouseButtonDown(2)) { Xmover = mousePosition.x; Ymover = mousePosition.y; Desplazar = true; } if (Input.GetMouseButtonUp(2)) { Desplazar = false; } if (Desplazar) { Camera.main.transform.position = new Vector3(Camera.main.transform.position.x - mousePosition.x + Xmover, Camera.main.transform.position.y - mousePosition.y + Ymover, Camera.main.transform.position.z); } } }
Con este simple Script ya tendriamos nuestro Zoom en 2D ahora os enseñare el Script en 3D con la rueda del mouse que tambien debereis de incorporar a la camara
using System.Collections; using System.Collections.Generic; using UnityEngine; public class zoom : MonoBehaviour { public GameObject player; void Update() { if (Input.GetAxis("Mouse ScrollWheel") != 0) { transform.localPosition += Vector3.forward * Input.GetAxis("Mouse ScrollWheel") * 200; { RaycastHit hit; Ray ray = this.transform.GetComponent<Camera>().ScreenPointToRay(Input.mousePosition); Vector3 desiredPosition; if (Physics.Raycast(ray, out hit)) { desiredPosition = hit.point; } else { desiredPosition = transform.position; } float distance = Vector3.Distance(desiredPosition, transform.position); Vector3 direction = Vector3.Normalize(desiredPosition - transform.position) * (distance * Input.GetAxis("Mouse ScrollWheel")); transform.position += direction; } } } }