x


Destroying Gate by hitting a switch

Hey all,

I'm very new to scripting and Unity in general. I'm trying to create a level where the player would hit a switch and it would destroy a gate blocking the way to the end of the level.

var Gate : GameObject;
var Key : GameObject;
var isSwitch = false;
var isKeyHit = false;

function Update()
{     
  if (isKeyHit == true)
  {
      Destroy(Gate);
  }
} 
function OnCollisionEnter(collision : Collision) {
  if (isSwitch){
          isKeyHit = true;
          Destroy(Key);
  }
}

Above is the script I wrote, I'm using the First Person prefab for my character and I have a capsule placed on the map to act as the switch and a cube for the gate which both have the above script attached to it. It doesn't work though :(

Can anyone help me out with this, all it needs to do is have the player hit that switch/key so that the gate is destroyed

Any help would be greatly appreciated

more ▼

asked May 03 '10 at 04:33 AM

TerryN gravatar image

TerryN
23 1 1 5

@TerryN, it's nice that you checkmarked the answer, but remember you can also upvote answers, here and anywhere else, that you think are good.

May 05 '10 at 12:47 AM Cyclops

@Cyclops sorry, still a noob lol. I clicked the arrow above the #1 on the answer which turned it into a 2, I'm guessing that's what you mean by upvoting.

May 05 '10 at 02:27 PM TerryN

@TerryN, yes, that's, thanks for doing it.

May 05 '10 at 11:06 PM Cyclops
(comments are locked)
10|3000 characters needed characters left

1 answer: sort voted first

One of the objects needs a non-kinematic rigid body to register a collision. Might be better to keep key values in one object like the player to keep track of things.

You can do an OnCollisionEnter(other:Collision){ SendMessage("HitKey",keyNumber)}

And then on the gate do a similar send message to say ("HitGate",gateNumber, gameObject)

And then on the player script you've got 2 functions called HitKey and HitGate

function HitKey(number){
   keyNumber = number;
}

function HitGate(number, GameObj){
   if(number == keyNumber){
      Destroy(GameObj);
   }
}
more ▼

answered May 03 '10 at 11:47 AM

spinaljack gravatar image

spinaljack
9.1k 18 31 91

this way you can have a set of keys for different gates on the player

May 03 '10 at 12:05 PM spinaljack

You were right, my main problem was that I hadn't got the script on my player, great idea about the numbers for multiple gates. Thanks a lot :)

May 03 '10 at 02:27 PM TerryN
(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:

x2485
x1092
x764
x237

asked: May 03 '10 at 04:33 AM

Seen: 894 times

Last Updated: May 03 '10 at 04:33 AM