This script works fine until there is more than one door/cube in the scene. Only one of the objects will disappear (if two cubes, only one cube; if two doors, only one door). And yes, I have tried "FindGameObjectsWithTag.
public class Collection : MonoBehaviour
{
public Transform tForm;
public GameObject gObject;
private bool isYellow = false;
private bool isRed = false;
private bool isBlue = false;
private bool isPurple = false;
void OnTriggerEnter(Collider other)
{
//yellow
if (other.gameObject.tag == "YellowCube")
{
isYellow = true;
ChangeColorYellow();
}
//red
if (other.gameObject.tag == "RedCube")
{
isRed = true;
ChangeColorRed();
}
//blue
if (other.gameObject.tag == "BlueCube")
{
isBlue = true;
ChangeColorBlue();
}
if (other.gameObject.tag == "PurpleKey")
{
isPurple = true;
ChangeColorPurple();
}
}
private Color childColorYellow;
private Color childColorRed;
private Color childColorBlue;
private Color childColorPurple;
public void ChangeColorYellow()
{
childColorYellow = new Color(1, 0.92f, 0.016f, 1);
transform.Find("Body").gameObject.GetComponent<Renderer>().material.color = childColorYellow;
transform.Find("Front").gameObject.GetComponent<Renderer>().material.color = childColorYellow;
isRed = false;
isBlue = false;
isPurple = false;
}
public void ChangeColorRed()
{
childColorRed = new Color(1, 0, 0, 1);
transform.Find("Body").gameObject.GetComponent<Renderer>().material.color = childColorRed;
transform.Find("Front").gameObject.GetComponent<Renderer>().material.color = childColorRed;
isYellow = false;
isBlue = false;
isPurple = false;
}
public void ChangeColorBlue()
{
childColorBlue = new Color(0, 0, 1, 1);
transform.Find("Body").gameObject.GetComponent<Renderer>().material.color = childColorBlue;
transform.Find("Front").gameObject.GetComponent<Renderer>().material.color = childColorBlue;
isYellow = false;
isRed = false;
isPurple = false;
}
public void ChangeColorPurple()
{
childColorPurple = new Color(1, 0, 1, 1);
transform.Find("Body").gameObject.GetComponent<Renderer>().material.color = childColorPurple;
transform.Find("Front").gameObject.GetComponent<Renderer>().material.color = childColorPurple;
isYellow = false;
isRed = false;
isBlue = false;
}
public void Door_Cube()
{
if (isYellow == true)
{
//yellow
GameObject.FindGameObjectWithTag("YellowCube").GetComponent<Renderer>().enabled = false;
GameObject.FindGameObjectWithTag("YellowDoor").GetComponent<Collider>().isTrigger = true;
GameObject.FindGameObjectWithTag("YellowDoor").GetComponent<Renderer>().material.color = new Color(1, 0.92f, 0.016f, 0.25f);
//red
GameObject.FindGameObjectWithTag("RedCube").GetComponent<Renderer>().enabled = true;
GameObject.FindGameObjectWithTag("RedDoor").GetComponent<Collider>().isTrigger = false;
GameObject.FindGameObjectWithTag("RedDoor").GetComponent<Renderer>().material.color = new Color(1, 0, 0, 1);
//blue
GameObject.FindGameObjectWithTag("BlueCube").GetComponent<Renderer>().enabled = true;
GameObject.FindGameObjectWithTag("BlueDoor").GetComponent<Collider>().isTrigger = false;
GameObject.FindGameObjectWithTag("BlueDoor").GetComponent<Renderer>().material.color = new Color(0, 0, 1, 1);
}
if (isRed == true)
{
//red
GameObject.FindGameObjectWithTag("RedCube").GetComponent<Renderer>().enabled = false;
GameObject.FindGameObjectWithTag("RedDoor").GetComponent<Collider>().isTrigger = true;
GameObject.FindGameObjectWithTag("RedDoor").GetComponent<Renderer>().material.color = new Color(1, 0, 0, 0.25f);
//yellow
GameObject.FindGameObjectWithTag("YellowCube").GetComponent<Renderer>().enabled = true;
GameObject.FindGameObjectWithTag("YellowDoor").GetComponent<Collider>().isTrigger = false;
GameObject.FindGameObjectWithTag("YellowDoor").GetComponent<Renderer>().material.color = new Color(1, 0.92f, 0.016f, 1);
//blue
GameObject.FindGameObjectWithTag("BlueCube").GetComponent<Renderer>().enabled = true;
GameObject.FindGameObjectWithTag("BlueDoor").GetComponent<Collider>().isTrigger = false;
GameObject.FindGameObjectWithTag("BlueDoor").GetComponent<Renderer>().material.color = new Color(0, 0, 1, 1);
}
if (isBlue == true)
{
//blue
GameObject.FindGameObjectWithTag("BlueCube").GetComponent<Renderer>().enabled = false;
GameObject.FindGameObjectWithTag("BlueDoor").GetComponent<Collider>().isTrigger = true;
GameObject.FindGameObjectWithTag("BlueDoor").GetComponent<Renderer>().material.color = new Color(0, 0, 1, 0.25f);
//yellow
GameObject.FindGameObjectWithTag("YellowCube").GetComponent<Renderer>().enabled = true;
GameObject.FindGameObjectWithTag("YellowDoor").GetComponent<Collider>().isTrigger = false;
GameObject.FindGameObjectWithTag("YellowDoor").GetComponent<Renderer>().material.color = new Color(1, 0.92f, 0.016f, 1);
//red
GameObject.FindGameObjectWithTag("RedCube").GetComponent<Renderer>().enabled = true;
GameObject.FindGameObjectWithTag("RedDoor").GetComponent<Collider>().isTrigger = false;
GameObject.FindGameObjectWithTag("RedDoor").GetComponent<Renderer>().material.color = new Color(1, 0, 0, 1);
}
if (isPurple == true)
{
//purple
GameObject.FindGameObjectWithTag("PurpleKey").GetComponent<Renderer>().enabled = false;
GameObject.FindGameObjectWithTag("PurpleDoor").GetComponent<Collider>().isTrigger = true;
GameObject.FindGameObjectWithTag("PurpleDoor").GetComponent<Renderer>().enabled = false;
}
}
void Update()
{
if (isYellow == true)
{
Door_Cube();
}
if (isRed == true)
{
Door_Cube();
}
if (isBlue == true)
{
Door_Cube();
}
if (isPurple == true)
{
Door_Cube();
}
}