Jump to content
UnitySpain

Aceptamos donaciones vía Paypal.

UnitySpain.com es un servicio gratuito, pero mantener la Comunidad conlleva una serie de gastos.

Fondo Anual Unityspain: Donados 15,00€ de 150,00€

  • Servidor: Dominio.com y Hosting Web
  • Mantenimiento de los Foros
  • Contenido y Servicios Extras
  • Mantenimiento para Redes Sociales
Sign in to follow this  
Nolaif

Alguien sabe explicarme los parámetros de este comando?

Recommended Posts

 RaycastHit hit;
 if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100))

Gracias. Resulta un poco confuso de entender.

Share this post


Link to post
Share on other sites

Naturalmente, ya leí los docs y no sé interpretarlos (tendría que haberlo advertido? Disculpa).

Mi duda es sobre todo el parámetro, out, no aparece en detalle.

Share this post


Link to post
Share on other sites

no tiene mucho que explicar, en realidad es mucho mas sencillo de lo que parece y es mas dificil de explicar que de entender.

imaginate la funcion public float CalcularDistancia (Vector3 a, Vector3 b); que lo que hace es devolver la distancia entre dos puntos que se le pasan como parametro ... y ahora imaginate que quieres llamar esta funcion almacenando el resultado en una variable de la siguiente manera :

Vector3 a = new Vector3 (1f, 0f, 0f), b = new Vector3 (5f, 0f, 0f);

float distancia = CalcularDistancia (a, b);

Podrias cambiar la anterior funcion por algo parecido a public void CalcularDistancia (Vector3 a, Vector3 b, out float distancia); y de este modo habria que llamar a la funcion de la siguiente manera :

float distanciaCalculo;

Vector3 a = new Vector3 (1f, 0f, 0f), b = new Vector3 (5f, 0f, 0f);

CalcularDistancia (a, b, out distanciaCalculo);

.... en resumen lo que consigues con el modificador out en un parametro es que el resultado de alguna operacion (en menor o mayor complejidad) se almacene en una variable externa al parametro. El modificador out tiene exactamente la misma funcion al modificador ref con la diferencia que, mientras con ref no es necesario reiniciar el objeto dentro del parametro, con el modificador out si que obliga a ello.

P.D. en el ejemplo he utilizado el tipo float para el parametro out, pero no estoy seguro de si lo permite ... yo siempre lo utilizo con clases objeto, que es a lo que esta orientado (era para simplificar el ejemplo). Espero que te haya aclarado algo, porque como decia al principio es mas dificil de explicar que de entender

Edited by Arthure

Share this post


Link to post
Share on other sites

Hey gracias. Estuve buscando la manera de mover un GameObject por la pantalla a click de ratón, y ese comando me solucionó el problema, pero no entendía el parámetro out.

Ahora lo tengo funcionando, y lo más importante, lo entiendo :)

 

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            RaycastHit hit;

            if (Physics.Raycast(camara.ScreenPointToRay(Input.mousePosition), out hit, 100))
            {
                agent.destination = hit.point;
            }
        }
    }

No sabes la de cosas que he probado hasta llegar aquí ^^

 

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...