ForoDeveloper

Ayuda General => Ayuda (Scripts) => Mensaje iniciado por: 504games en Diciembre 23, 2017, 01:11:25 am

Título: Ayuda a adaptar Mathf.Clamp en C#!
Publicado por: 504games en Diciembre 23, 2017, 01:11:25 am
Hola que tal? alguien me podria ayudar a adaptar mi script de zoom con 2 dedos para que no se pase de una cierta cantidad? estaba planeando usar Mathf.Clamp en C#

Código: You are not allowed to view links. Register or Login
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Zoom : MonoBehaviour
{
public float perspectiveZoomSpeed = 0.5f;        // El tipo de cambio del campo de visión en modo perspectiva.
public float orthoZoomSpeed = 0.5f;        // El tipo de cambio del tamaño ortográfico en modo ortográfico.

private void  Update()
{
// Si hay dos toques en el dispositivo ...
if (Input.touchCount == 2)
{
// Almacene ambos toques.
var touchZero = Input.GetTouch(0);
var touchOne = Input.GetTouch(1);

// Encuentra la posición en el cuadro anterior de cada toque.
var touchZeroPrevPos = touchZero.position - touchZero.deltaPosition;
var touchOnePrevPos = touchOne.position - touchOne.deltaPosition;

// Encuentra la magnitud del vector (la distancia) entre los toques en cada cuadro.
var prevTouchDeltaMag = (touchZeroPrevPos - touchOnePrevPos).magnitude;
var touchDeltaMag = (touchZero.position - touchOne.position).magnitude;

// Encuentra la diferencia en las distancias entre cada cuadro.
var deltaMagnitudeDiff = prevTouchDeltaMag - touchDeltaMag;

// Si la cámara es ortográfica ...
if (GetComponent<Camera>().orthographic)
{
// ... cambia el tamaño ortográfico en función del cambio en la distancia entre los toques.
GetComponent<Camera>().orthographicSize += deltaMagnitudeDiff * orthoZoomSpeed;

//El tamaño ortográfico nunca caiga por debajo de cero.
GetComponent<Camera>().orthographicSize = Mathf.Max(GetComponent<Camera>().orthographicSize, 6f);
}
else
{
// De lo contrario, cambie el campo de visión según el cambio en la distancia entre los toques.
GetComponent<Camera>().fieldOfView += deltaMagnitudeDiff * perspectiveZoomSpeed;

// El campo de visión para asegurarse de que esté entre 0 y 180.
GetComponent<Camera>().fieldOfView = Mathf.Clamp(GetComponent<Camera>().fieldOfView, 6f, 15.1f);


}
}
}
}

Cuando este lista hare el aporte en el mismo foro
Título: Re:Ayuda a adaptar Mathf.Clamp en C#!
Publicado por: Astro_Corp en Julio 09, 2018, 09:19:37 pm
Lo del zoom con 2 dedos: https://unity3d.com/es/learn/tutorials/topics/mobile-touch/pinch-zoom

lo de limitar la distancia, te dejo un ejemplo, yo limito el eje Y de mi cámara a la hora de rotarla, tu quieres el "zoom" que es moverla, no es dificil adaptarla xd

Código: You are not allowed to view links. Register or Login
public class MovimientoCamera : MonoBehaviour
{
    private const float Y_ANGLE_MIN = 5.0f;
    private const float Y_ANGLE_MAX = 65.0f;

    public Transform lookAt;
    public Transform camTransform;
    public float distance = 10.0f;

    private float currentX = 0.0f;
    private float currentY = 45.0f;

    private float sensitivityX = 2.0f;
    private float sensitivityY = 2.0f;

    private void Start()
    {
        camTransform = transform;
    }

    private void Update()
    {
        currentX += Input.GetAxis("Mouse X") * sensitivityX;
        currentY += Input.GetAxis("Mouse Y") * sensitivityY;

        currentY = Mathf.Clamp(currentY, Y_ANGLE_MIN, Y_ANGLE_MAX);
    }

    private void LateUpdate()
    {
        Vector3 dir = new Vector3(0, 0, -distance);
        Quaternion rotation = Quaternion.Euler(currentY, currentX, 0);
        camTransform.position = lookAt.position + rotation * dir;
        camTransform.LookAt(lookAt.position);
    }
}

Desactiva adblock para acceder a la web, sin la publicidad no podemos mantener la web