Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Alguien sabe explicarme los parámetros de este comando?

Iniciado por Nolaif, Febrero 28, 2016, 01:47:14 PM

Tema anterior - Siguiente tema
 RaycastHit hit;
 if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit, 100))
Gracias. Resulta un poco confuso de entender.


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.

Febrero 28, 2016, 03:34:37 PM #3 Ultima modificación: Febrero 28, 2016, 03:35:10 PM por Arthure
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

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í ^^

 

Etiquetas: