using System.Collections; using System.Collections.Generic; using UnityEngine; public enum Colours { Blue, Yellow, Red, Green, Orange, Purple, White, } public class CrusherScript : MonoBehaviour { public Colours ThisCol; private bool InTrigger; public GameObject ColourCube; public GameObject CubePlaceHolder; private Animator CrusherAnim; private AudioManager Audio; public Color32 White = new Color32(255, 255, 255, 255); // Primrary public Color32 Blue = new Color32(0, 153, 255, 255); public Color32 Yellow = new Color32(255, 255, 0, 255); public Color32 Red = new Color32(255, 0, 0, 255); // Secondary public Color32 Green = new Color32(0, 255, 0, 255); public Color32 Orange = new Color32(255, 128, 0, 255); public Color32 Purple = new Color32(128, 0, 255, 255); // Brown public Color32 Brown = new Color32(153, 51, 0, 255); private bool HasChangedColour; private bool IsCoRunning; void Start() { Audio = FindObjectOfType<AudioManager>(); CrusherAnim = transform.parent.GetComponentInChildren<Animator>(); } private void Update() { if ((InTrigger) && (Input.GetButton("Pickup"))) { CrusherAnim.SetBool("CrushIt", true); if (!IsCoRunning) { StartCoroutine(WaitAndTrigger()); } ColourCube = Camera.main.transform.GetChild(0).gameObject; if (!HasChangedColour) { ColourCube.GetComponent<Renderer>().material.color = GuessThatColour(ColourCube); } FindObjectOfType<InvScript>().HeldItem.gameObject.GetComponent<Renderer>().material.SetColor("_Color", ColourCube.GetComponent<Renderer>().material.color); Camera.main.transform.GetChild(0).GetComponent<Renderer>().material.SetColor("test", ColourCube.GetComponent<Renderer>().material.color); FindObjectOfType<InvScript>().HeldItem.gameObject.name = ColourCube.name; } } private void OnTriggerEnter(Collider other) { if (other.gameObject.tag == "Player") { InTrigger = true; } } private void OnTriggerExit(Collider other) { if (other.gameObject.tag == "Player") { HasChangedColour = false; InTrigger = false; } } private IEnumerator WaitAndTrigger() { IsCoRunning = true; yield return new WaitForSeconds(.5f); CrusherAnim.SetBool("CrushIt", false); IsCoRunning = false; } // Sounds like a gameshow private Color32 GuessThatColour(GameObject InputBox) { HasChangedColour = true; Color32 Col = InputBox.GetComponent<Renderer>().material.color; switch (ThisCol) { case Colours.Blue: if (Col.ToString() == Yellow.ToString()) { InputBox.name = "GreenBox"; return Green; } else if (Col.ToString() == Red.ToString()) { InputBox.name = "PurpleBox"; return Purple; } else if (Col.ToString() == Green.ToString()) { InputBox.name = "BrownBox"; return Brown; } else if (Col.ToString() == Orange.ToString()) { InputBox.name = "BrownBox"; return Brown; } else if (Col.ToString() == White.ToString()) { InputBox.name = "BlueBox"; return Blue; } else { InputBox.name = "BrownBox"; return Brown; } case Colours.Yellow: if (Col.ToString() == Blue.ToString()) { InputBox.name = "GreenBox"; return Green; } else if (Col.ToString() == Red.ToString()) { InputBox.name = "OrangeBox"; return Orange; } else if (Col.ToString() == Green.ToString()) { InputBox.name = "BrownBox"; return Brown; } else if (Col.ToString() == Orange.ToString()) { InputBox.name = "BrownBox"; return Brown; } else if (Col.ToString() == White.ToString()) { InputBox.name = "YellowBox"; return Yellow; } else { InputBox.name = "BrownBox"; return Brown; } case Colours.Red: if (Col.ToString() == Blue.ToString()) { InputBox.name = "PurpleBox"; return Purple; } else if (Col.ToString() == Yellow.ToString()) { InputBox.name = "OrangeBox"; return Orange; } else if (Col.ToString() == Green.ToString()) { InputBox.name = "BrownBox"; return Brown; } else if (Col.ToString() == Orange.ToString()) { InputBox.name = "BrownBox"; return Brown; } else if (Col.ToString() == White.ToString()) { InputBox.name = "RedBox"; return Red; } else { InputBox.name = "BrownBox"; return Brown; } case Colours.Green: InputBox.name = "BrownBox"; return Brown; case Colours.Orange: InputBox.name = "BrownBox"; return Brown; case Colours.Purple: InputBox.name = "BrownBox"; return Brown; case Colours.White: InputBox.name = "WhiteBox"; return White; default: Debug.Log("Default"); return White; } } }