Okay, so I’m a total C# newbie. I’m trying to make a script that checks to see if multiple torches are burning, if they are then the door can open. So here is my code so far:
public class TorchType : MonoBehaviour {
public bool flameOn = false;
public string torchType = "A";
private void OpenThatDoor(){
if (flameOn == true)
GameObject.FindGameObjectsWithTag("Door");
if (torchType == doorType)
doorCount++;
}
then the next part is
public class DoorType : MonoBehaviour {
public string doorType = "A";
public int doorCount = 0;
public int torchMax = 3;
void Update () {
if (doorCount == torchMax)
//move door up
;
okay so I’m trying to make it so that door count and the string doorType can be accessed in the first script.
How do I do this? Help!
Thanks in advance!
Instead of using strings to tag the ‘torchType’ and the ‘doorType’, why don’t you directly link the torches to each door?
So, in your ‘DoorType’ script, add a variable that looks like this:
public TorchType[] torches;
This will give you a dropdown list in the inspector, that you can drag individual torches on to.
Then, in your door script’s Update function, do this:
bool shouldOpen = true; // This will be the final value that we check
// Innocent until proven guilty!
foreach(TorchType torch in torches) { // This executes the block of code once
// 'for each' torch in the array 'torches'
// the object 'torch' refers to the current torch that we are operating on
shouldOpen = shouldOpen && torch.flameOn; // shouldOpen will become 'false'
// if a torch is off
}
if(shouldOpen) {
// Open the door!
}
Then on your individual TorchType objects, you can determine whether a torch is on or off however you choose.
you can just have a variable of torches in your door script and set them in editor and at runtime check them like this
public TorchType torches;
public bool IsOpenable
{
get
{
//Check all torches to see if they are flaming or not.
foreach(var torch in torches)
{
//If a torch is turned off so door can not be opened
if(!torch.flamOn)
return false;
}
//If all torches were on so we can return true and allow being opened.
return true;
}
}