Пример #1
0
    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);
    }
Пример #2
0
    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));
        }
    }