- Home /
Win Condition of Racing Level
Hello There
Im making a racing game and i am currently trying to get the win conditions of the level finished so you can progress to the next race, the idea being that when the player (tagged with player) collides with a trigger checkpoint it accesses the script called "lapcounter" attached to the player and checks the 2 conditions in that script "lapcount" and "tokencount" and if lapcount = >4 and tokencount >=3 when the player hits the checkpoint it will progress to the next level/menu
I think i might be correct with the if statement checking to see if the lapcount and tokencount conditions have been met but when i try and build the code i get the error "The name lapcount does not exist in this current context"
Am i close with this idea and it needs a little tweaking or am i completely barking up the wrong tree?
(of note i am more of a designer than a programmer so go easy on me xD)
public class WinLevel1 : MonoBehaviour {
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update () {
}
void OnCollisionEnter(Collision Col){
if (Col.gameObject.tag == "Player")
{
GetComponent("lapcounter");
if(lapcount >= 4 && tokencount >= 3)
{
Application.LoadLevel("Track 3");
}
}
}
}
Answer by robertbu · May 02, 2014 at 03:25 PM
You are not barking up the wrong tree, but you need to do a bit more research on how stuff fits together. First, you want to set 'isTrigger' on the collider and use OnTriggerEnter(). You don't want the car to crash into your checkpoint. Second never use the string version of GetComponent() if you can help it. And you have to use the reference it gives back to access the component. I'm assuming that 'LapCounter' is a component on the player object, and that 'lapcount' and 'tokencount' are public variables of the LapCounter class. If so you can do something like:
void OnTriggerEnter(Collider col){
if (col.tag == "Player")
{
LapCounter lc = col.GetComponent<LapCounter>();
if(lc.lapcount >= 4 && lc.tokencount >= 3)
{
Application.LoadLevel("Track 3");
}
}
}
Note that I first use GetComponent() to get a reference to the LapCount component. Then I used that reference to get access to the specific 'lapcout' and 'tokencount' in that component.
Thanks for the help so quickly, good to know i wasnt barking up the wrong tree :D
the actual name of the component is "Lapcounter" case sensitive So i guess i would just change both of the "LapCounter" in line 4 to match then drag this script onto the checkpoint?
Which is also set to Is Trigger now
Yep. Just change in both places and you should be good to go.
YUP There we go, bit of fiddling with the names and number counts and its fully working, much appreciated dude :D