public void Awake() { Restart(); clickCube = FindObjectOfType <ClickCube>(); }
//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); } } }