private void DesactivarUltimaInteractible() { if (InteractibleUltima == null) { return; } InteractibleUltima.Saliendo(); InteractibleUltima = null; }
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(); } } }