x


Shooting target to trigger a door to open

I have not found any answers on here to help me out so I just thought I would ask. Hopefully I am not repeating a question with an answer already, I just haven't found it.

I have a door that needs to be opened after you shoot 3 targets. I have an inventory that keeps track of doors hit, and when you shoot the target it is destroyed and adds 1 to the inventory. I am trying to make it so once the inventory is at 3, the door will open. I already have a working door script so there is no problem on that, so I am just using print("Door is opening!"); to let me know everything is working properly.

//This script is used to open a door when the three targets are hit

function update ()
{
    if(GameManager.targetsHit == 3)
    {
        print("Door Opening!");
    }
}

//Im using print right now just to know if this is working correctly. Right now if I shoot all the targets, it doesn't print.

// This script keeps track of stats, inventory, etc...

static var greenKey: int = 0;
static var targetsHit: int = 0;

//This script destroys the game object when trigger object is hit

function OnTriggerEnter ( other: Collider )
{
    Destroy(gameObject);
    GameManager.targetsHit ++;
    print("Target Hit!");
}

As of right now, the targets get destroyed and the print comes up and says that the target was hit. So it should be adding to the inventory, and the door should open once it reaches 3. . . but it is not. Please help. Thank you in advance!

more ▼

asked Oct 27 '10 at 03:33 AM

Corey Pullman gravatar image

Corey Pullman
17 3 3 6

I added code tags so it's easier to read.

Oct 27 '10 at 03:38 AM Marowi
(comments are locked)
10|3000 characters needed characters left

1 answer: sort oldest

Your problem lies with:

function update ()

Code is case-sensitive ... it needs to be:

function Update ()

To be honest, I would recommend considering a change to how you're checking if the number of targets have been hit. Checking every frame until the 'targetsHit == 3' means unnecessary inefficiencies. It will also print the message every frame, and continue to check targetsHit even after it counts past 3.

I would personally suggest checking it just after you increment the count.

function OnTriggerEnter ( other: Collider )
{
    Destroy(gameObject);
    GameManager.targetsHit ++;
    print("Target Hit!");
    if ( GameManager.targetsHit == 3 )
    {
        // open the door here;
    }
}
more ▼

answered Oct 27 '10 at 03:39 AM

Marowi gravatar image

Marowi
4.9k 4 14 53

Oh man I didnt even think of that. I changed it, yet it still does not print that the door is opening. Am I doing this the wrong way?

Oct 27 '10 at 03:54 AM Corey Pullman

If you have it in function Update() and it's not printing, then either targetsHit isn't equal to 3, the script isn't enabled, or the script isn't attached to a GameObject.

Oct 27 '10 at 04:06 AM Marowi

I just tried that, and it still doesn't work. BUT in a way it does... cause when I shoot and destroy all the targets, it alerts me that the target is hit at the bottom, and thats all I see. "Target Hit!" BUT when i go into the console alert thing, It says three "Target Hit!" then it says "Door Opening!" then it is followed by three more target hit's...

Oct 27 '10 at 04:24 AM Corey Pullman

Well I got it working so that once you shoot all three targets it prints door opening. But there is still a problem, I found out that every time I destroy 1 target, it prints target hit twice, so it is counting each target as 2... so I increased the targetsHit == 6 and it works. No idea why it is counting each as 2 though.

Oct 27 '10 at 04:42 AM Corey Pullman

I suspect that the same may have been true when you tried it in Update(). Is "Target Hit!" being printed anywhere else in your code? If not, then perhaps you could add "Debug.Log(other.gameObject.name)" to OnTriggerEnter, to see which objects are entering the trigger.

Oct 27 '10 at 04:43 AM Marowi
(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x275
x193
x95
x16

asked: Oct 27 '10 at 03:33 AM

Seen: 1285 times

Last Updated: Oct 27 '10 at 03:37 AM