Beispiel #1
0
    private void Start()
    {
        foreach (Transform tr in AISpawnPositions)
        {
            Transform ai = Instantiate(Resources.Load <GameObject>("AI"), transform).transform; ai.position = tr.position; ai.rotation = tr.rotation; AIs.Add(ai);
        }

        player          = Instantiate(Resources.Load <GameObject>("Player"), transform).transform;
        player.position = spawnPositions[0].position;
        player.rotation = spawnPositions[0].rotation;

        crown = Instantiate(Resources.Load <GameObject>("Crown"), transform).GetComponent <CrownController>();

        CameraController.instance.SetTarget(player, player);
        LevelManager.instance.startEvent.AddListener(() => { start = true; });
    }
    IEnumerator Play(List <float>[] records)
    {
        while (true)
        {
            if (loopToPlay.Count != 0)
            {
                Record[] tempCopy = new Record[loopToPlay.Count];
                loopToPlay.CopyTo(tempCopy);
                foreach (var rec in tempCopy)
                {
                    if (rec.sound != -1)
                    {
                        yield return(new WaitForSeconds(rec.delay));

                        sources[rec.sound].Play();
                        sources[rec.sound].pitch = CrownController.getMultiplicator();
                    }
                }
                loopToPlay[0] = new Record(-1, Time.time);
            }
        }
    }
 private void Start()
 {
     m_rigidbody = GetComponent<Rigidbody>();
     m_startPos = GetComponent<CarStartPos>();
     m_crownController = GetComponent<CrownController>();
 }
    // Update is called once per frame
    void Update()
    {
        // Debug.Log("Update ?");

        /*
         * We just play without recording
         * Key to index mapping :
         * A = 0; B = 1 ..... Z = 25;
         *
         * If pressed twice the beat stops
         */
        foreach (KeyCode kcode in Enum.GetValues(typeof(KeyCode)))
        {
            if (Input.GetKeyDown(kcode))
            {
                int index = (int)kcode - 97;
                if (index >= 0 && index <= 26)
                {
                    sources[index].Play();
                    sources[index].pitch = CrownController.getMultiplicator();
                }
                if (index == (27 - 97))
                { //we pressed ESC
                    int i;
                    for (i = 0; i < 26; i++)
                    {
                        sources[i].Stop();
                        loopToPlay.Clear();
                    }
                }

                //---------------------------------------------------------------------------

                if (Input.GetKey("space"))
                {
                    if ((int)kcode != 32)
                    {
                        Debug.Log((int)kcode);
                        int   indexRecDash = (int)kcode - 97;
                        float t            = Time.time;
                        //Fix the xtart record time
                        if (loopToPlay.Count == 0)
                        {
                            loopToPlay.Add(new AudioScript.Record(-1, t));
                        }
                        float del = Time.time - loopToPlay[0].delay;
                        Debug.Log(del);
                        loopToPlay.Add(new Record(indexRecDash, del));
                        //Check if we need to insert

                        if (loopToPlay[0].delay + loopToPlay[loopToPlay.Count - 1].delay < t + del)
                        {
                            loopToPlay.Add(new Record(indexRecDash, del));
                        }
                        else
                        {
                            bool done = false;
                            int  i    = 1;
                            while (i < loopToPlay.Count && !done)
                            {
                                if (loopToPlay[0].delay + loopToPlay[i].delay < t + del)
                                {
                                    loopToPlay.Insert(i, new Record(indexRecDash, del));
                                    done = true;
                                }
                            }
                        }
                        Record last = loopToPlay[loopToPlay.Count - 1];
                        Debug.Log(last.sound);
                        Debug.Log(last.delay);
                        //loopToPlay.Add(new Record(indexRecDash, del));
                    }
                }
            }
        }
    }