private void GeneratePlayerTriggeredEvent(GameObject block) { PlayerTriggeredEvent temp = new PlayerTriggeredEvent(); temp.type = (PlayerTriggeredEventType)UnityEngine.Random.Range(0, Enum.GetNames(typeof(PlayerTriggeredEventType)).Length); temp.minimumPositionForTrigger = new Vector2(block.transform.position.x, block.transform.position.z); temp.blockIndex = blocks.IndexOf(block); temp.timeSpan = UnityEngine.Random.Range(1, 10); events.Add(temp); }
private IEnumerator HandlePlayerTriggeredEvents() { List <PlayerTriggeredEvent> activatedEvents = new List <PlayerTriggeredEvent>(); GameObject player = GameObject.FindGameObjectWithTag("Player"); while (true) { foreach (PlayerTriggeredEvent e in events) { if (player.transform.position.x >= e.minimumPositionForTrigger.x && player.transform.position.z >= e.minimumPositionForTrigger.y && e.activated == false) { activatedEvents.Add(e); e.activated = true; } } for (int i = activatedEvents.Count - 1; i >= 0; i--) { PlayerTriggeredEvent a = activatedEvents[i]; a.timeActive++; if (a.type == PlayerTriggeredEventType.DisappearingWorld) { GameObject nextBlock = blocks[a.blockIndex + (a.timeActive)]; try { DisappearingBlock db = nextBlock.AddComponent <DisappearingBlock>(); StartCoroutine(db.ShrinkAndDisappear()); } catch { } } else if (a.type == PlayerTriggeredEventType.BulletRain) { Instantiate(bullet, player.transform.position + new Vector3(0f, 10f, 0f), Quaternion.identity); } if (a.timeActive >= a.timeSpan) { activatedEvents.Remove(a); } } yield return(new WaitForSeconds(0.5f)); } }