Exemplo n.º 1
0
 public void Awake()
 {
     Restart();
     clickCube = FindObjectOfType <ClickCube>();
 }
Exemplo n.º 2
0
    //void som sker när man klickar på kuben
    private void OnMouseDown()
    {
        if (levelManager.clickAllow)
        {
            //lägger till 1 på variabel som mäter hur många gånger man klickar
            levelManager.amountOfClicks++;

            //--gammalt--//ger "enabled" på ljuset motsatt värde, så om ljuset är av sätts det på och om det är på sätts det av
            //cubeLight.enabled = !cubeLight.enabled;

            //Ser till att 2 av samma coroutine inte körs samtidigt
            if (coroutine != null)
            {
                StopCoroutine(coroutine);
            }

            //Startar Coroutinen som ändrar ljuset. Sparar Coroutine i en variabel
            coroutine = StartCoroutine(LightUp());


            //foreach loop som går igenom varje håll som kuben ska skicka raykasts åt
            foreach (var direction in cubeDirList)
            {
                //variabel som sparar raycast träff
                RaycastHit hit;

                //Raycast åt ett av hållen i listan, om den träffar en annan kub sker koden nedanför
                if (Physics.Raycast(transform.position, direction, out hit, 2.9f))
                {
                    //skaffar referense för scriptet på kuben
                    ClickCube scriptReferense = hit.collider.GetComponent <ClickCube>();

                    //--gammalt--//Får kubens light.enabled motsatt värde, exakt som tidigare
                    //scriptReferense.cubeLight.enabled = !scriptReferense.cubeLight.enabled;


                    //Ser till att 2 av samma coroutine inte körs samtidigt
                    if (scriptReferense.coroutine != null)
                    {
                        scriptReferense.StopCoroutine(scriptReferense.coroutine);
                    }

                    //Startar Coroutinen som ändrar ljuset. Sparar Coroutine i en variabel
                    scriptReferense.coroutine = scriptReferense.StartCoroutine(scriptReferense.LightUp());

                    //skapar en ny trail och sparar objektet i en variabel
                    GameObject newTrail = Instantiate(trailPrefab, transform.position, Quaternion.identity);

                    //skapar en script referense med hjälp av variabeln
                    TrailBehavior scriptRef = newTrail.GetComponent <TrailBehavior>();

                    //Ger trailen samma håll som raycasten
                    scriptRef.dir = direction;
                }
            }



            //skapar variabel som ska kolla om alla ljus är på
            bool checkLight = true;

            //foreach loop som går igenom alla kuber
            foreach (var item in FindObjectsOfType <ClickCube>())
            {
                //kollar om lightdecrease är true, om det stämmer är inte alla ljus tända och checkLight sätts till false
                if (item.lightDecrease)
                {
                    checkLight = false;
                }
            }

            if (checkLight)
            {
                //spelar ljudeffect
                audioManager.manager.PlayOneShot(audioManager.clip3);

                //Sätter leveln till completed
                FindObjectOfType <LevelComplete>().SetLevelComplete();

                //Startar Victory screenens animation, med en 2s delay
                FindObjectOfType <LevelComplete>().Invoke("StartTransition", 2f);

                //Gör att man inte längre kan klicka på kuberna
                levelManager.clickAllow = false;

                //tar bort refresh knappen
                Destroy(FindObjectOfType <RefreshButton>().gameObject);
            }
            else
            {
                //spelar ljudeffect
                audioManager.manager.PlayOneShot(audioManager.clip2);
            }
        }
    }