public void RegisterTrigger(FloorTrigger trigger) { GameHandler gameHandler = GameHandler.instance; Floor chosenFloor = floors[trigger.floorIndex]; StopAllCoroutines(); for (int i = 0; i < floors.Length; i++) { if (i == trigger.floorIndex) { continue; } Floor floor = floors[i]; //Debug.Log(floor.obj.name + " | " + (floor.bg == null) + i.ToString() ); if (floor.obj.GetComponentInChildren <Renderer>().material.color.a < 1) { if (floor.bg != null) { StartCoroutine(gameHandler.Fade(floor.bg, 0.1f, "out")); } StartCoroutine(gameHandler.Fade(floor.obj, 0.2f, "in")); } if (floor.bg != null) { //Debug.Log(floor.bg.name); Renderer[] bgRenderers = floor.bg.GetComponentsInChildren <Renderer>(); foreach (Renderer renderer in bgRenderers) { Color color = renderer.material.color; color.a = 0; renderer.material.color = color; } } floor.obj.GetComponent <Collider2D>().enabled = true; } if (trigger.mode == FloorTrigger.Mode.entry) { StartCoroutine(gameHandler.Fade(chosenFloor.obj, 0.5f, "out")); if (chosenFloor.bg != null) { StartCoroutine(gameHandler.Fade(chosenFloor.bg, 0.2f, "in")); } chosenFloor.obj.GetComponent <Collider2D>().enabled = false; } else { StartCoroutine(gameHandler.Fade(chosenFloor.obj, 0.2f, "in")); if (chosenFloor.bg != null) { StartCoroutine(gameHandler.Fade(chosenFloor.bg, 0.5f, "out")); } // chosenFloor.obj.GetComponent<Collider2D>().enabled = true; } }
private void OnTriggerExit(Collider other) { FloorTrigger floor = other.gameObject.GetComponent <FloorTrigger>(); if (floor == null) { return; } OnFloorExit?.Invoke(); }
/// <summary> /// Checks if the specified <see cref="FloorTrigger"/> has been triggered by the environnement. /// </summary> /// <param name="trigger"><see cref="FloorTrigger"/></param> /// <returns><c>True</c> if triggered; <c>False</c> otherwise.</returns> internal bool IsTriggered(FloorTrigger trigger) { return(trigger.Overlap(Player) || CurrentScreen.Enemies.Any(e => trigger.Overlap(e))); }