¿No estás registrado?

Al no estar registrado en el foro, no podrás ver los enlaces y tampoco podrás tener acceso a la mayoría de contenido.

Autor Tema: Ayuda a adaptar Mathf.Clamp en C#!  (Leído 159 veces)

504games

  • Usuario Diamante
  • *****
  • Puntos: 2154
  • Mensajes: 183
  • Country: hn
  • Porcentaje De Actividad:
    0%
  • Agradecido: 8 veces
    • Ver Perfil
    • 504 Games
Ayuda a adaptar Mathf.Clamp en C#!
« 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


Pobre del que lo sabe todo, porque no tiene nada más que aprender ni razón para vivir. -
 
Los visitantes no pueden dar puntos :(
point 0 Puntos

Este tema no recibió puntos.

ForoDeveloper

Ayuda a adaptar Mathf.Clamp en C#!
« en: Diciembre 23, 2017, 01:11:25 am »

Astro_Corp

  • Administrator
  • Usuario Diamante
  • *****
  • Puntos: 3010
  • Mensajes: 272
  • Country: es
  • Porcentaje De Actividad:
    100%
  • Agradecido: 15 veces
  • ~ Cierro los ojos para poder ver ~
    • Ver Perfil
    • Astro_Corp
Re:Ayuda a adaptar Mathf.Clamp en C#!
« Respuesta #1 en: Julio 09, 2018, 09:19:37 pm »
Lo del zoom con 2 dedos: You are not allowed to view links. Register or Login

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);
    }
}
You are not allowed to view links. Register or Login
You are not allowed to view links. Register or Login
 

Tags: mathf.clamp 
 

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