Exemplo n.º 1
0
        private void DesactivarUltimaInteractible()
        {
            if (InteractibleUltima == null)
            {
                return;
            }

            InteractibleUltima.Saliendo();
            InteractibleUltima = null;
        }
Exemplo n.º 2
0
        public void OjoRaycast()
        {
            // Muestra el rayo de depuración, si es necesario
            if (MostrarDepuracionRay)
            {
                Debug.DrawRay(Camara.position, Camara.forward * LongitudDeDepuracionRay, Color.blue, DuracionDeDepuracionRay);
            }

            // Crear un rayo que apunte hacia delante de la cámara.
            Ray        RayCast = new Ray(Camara.position, Camara.forward);
            RaycastHit hit;

            // Hacer las forweards Raycast para ver si llegamos a un elemento interactivo
            if (Physics.Raycast(RayCast, out hit, LongitudDeRay, ~CapasDeExclucion))
            {
                InteractivoVR Interactible = hit.collider.GetComponent <InteractivoVR>(); // El intento por obtener la VRInteractiveItem golpeado en el objeto
                InteractibleActual = Interactible;

                // Si llegamos a un elemento interactivo y no tienen el último elemento interactivo, entonces llamada a través de
                if (Interactible && Interactible != InteractibleUltima)
                {
                    Interactible.Entrando();
                }

                // Desactivado el último elemento interactivo
                if (Interactible != InteractibleUltima)
                {
                    DesactivarUltimaInteractible();
                }
                InteractibleUltima = Interactible;

                // Algo fue golpeado, fijado en la posición de golpe.
                if (Reticula)
                {
                    Reticula.Configurar(hit);
                }

                if (SeGolpeoConRayCast != null)
                {
                    SeGolpeoConRayCast(hit);
                }
            }
            else
            {
                // Nada fue golpeado, discapacitados interactiva en el último elemento.
                DesactivarUltimaInteractible();
                InteractibleActual = null;

                // Posición del punto de mira a una distancia predeterminada.
                if (Reticula)
                {
                    Reticula.Configurar();
                }
            }
        }