- Home /
Something wrong with if else conditions...
Hi ! in my code i am creating a shield power up ... what i want when i collide(collect) RollerShoes powerup, then in my script OnCollitionEnter with Hardle my first block turns false if (rollerShoes== false); and second turns true if (rollerShoes==true), but whats happening OnCollition it executes both of the block... i don't where is the problim :/ here is the code #pragma strict
var powerUpSound: AudioClip;
var rollerShoes: boolean= false; //this is for the rollerShoes power up,when true power up is on
GetComponent(forwardmove);
GetComponent(Timer);
GetComponent(MagnetPwup);
GetComponent(PowerRun);
GetComponent(TouchJump);
function OnCollisionEnter(player: Collision)
{
//////////////Hardle////////////////
if(player.gameObject.tag=="Hardle")
{
if (rollerShoes== false); // for roller shoes power up
{
print("rollerShoes is On");
Application.LoadLevel(0);
// Timer.timer=false;
// forwardmove.flag1= false;
// MagnetPwup.magnet= false;
// PowerRun.shield=false;
// TouchJump.flag=false;
// TouchMovement.flag=false;
}
// }
if (rollerShoes==true)
{
Destroy(player.gameObject);
print("destroy");
yield WaitForSeconds(2);
rollerShoes=false;
}
}
else if(player.gameObject.tag=="Magnet")
{
audio.PlayOneShot(powerUpSound);
Destroy(player.gameObject);
MagnetPwup.magnet= true;
yield WaitForSeconds(12);
MagnetPwup.magnet= false;
}
else if(player.gameObject.tag=="PowerShield")
{
audio.PlayOneShot(powerUpSound);
Destroy(player.gameObject);
PowerRun.shield= true;
// Time.timeScale=2.0;
yield WaitForSeconds(12);
Time.timeScale=1.0;
PowerRun.shield= false;
}
else if (player.gameObject.tag=="RollerShoes")
{
Destroy(player.gameObject);
rollerShoes=true;
print("its true");
}
}
i recommend some logic examples to train your logic, also the easiest would be just remove every else, since your conditions are exclusive, they only respond to 1 value, that or a switch
i know i can use the switch condition either ... i will prefer if you rather put the answer not the recommendations... in my first condition Hardle i want to put inside 2 more conditions.... and rest of the else if is for the collision function ...everything is working well except just the first block of code in which i am putting two conditions... so i dont need to change all of my code ...
Answer by EvilWarren · Mar 03, 2014 at 03:58 PM
if (rollerShoes== false);
Drop the semi colon ; at the end of this line. The scope after this is not covered by your if statement because the semi colon terminates it, so it will execute regardless if the condition is true or false.
ahhhhhhhh i couldn't notice that .... i put ";" there ... lolx ... it works after removing .. Gracias :') ..
Your answer
Follow this Question
Related Questions
A node in a childnode? 1 Answer
Coroutines and if statements 1 Answer
Both IF statements in a function are run and their conditions are ignored. 4 Answers
Changing Missile Speed 1 Answer
How to activate a panel by a toggle using a script? 1 Answer