About "How do I make laps in a racing game?"

I am working on a racing game and I used the player and checkpoint scripts provided in the answer “save” made, but now I want to see the checkpoint counter on my GUI going up everytime I go through a checkpoint and what I managed to code created a CP and Lap counter on a GUI label, but it won’t go up as I pass through the checkpoints.

The Player code is this

var checkPointArray : Transform[]; //Checkpoint GameObjects stored as an array
private static public var currentCheckpoint : int = 0; //Current checkpoint
private static public var currentLap : int = 0; //Current lap
private static public var startPos : Vector3; //Starting position
private var moveMultiplier : int = 8; //Multiplies the Input.GetAxis movement of our player

function Start () {
    //Set a simple visual aid for the Checkpoints
    for (objAlpha in checkPointArray) {
       objAlpha.renderer.material.color.a = 0.2;
    }
    checkPointArray[0].renderer.material.color.a = 0.8;

    //Store the starting position of the player
    startPos = transform.position;
}

function FixedUpdate () {
    //Movement for the player (Standard Input: Arrow Keys/W,A,S,D)
    rigidbody.AddForce(Input.GetAxis("Horizontal")*moveMultiplier, 0, Input.GetAxis("Vertical")*moveMultiplier);
}

The checkpoint code (slightly modified in the end) is this

static var playerTransform : Transform; //Store the player transform

function Start () {
    playerTransform = gameObject.Find("Sphere (Player)").transform; //Set the player transform
}

function OnTriggerEnter (other : Collider) {
    //Is it the Player who enters the collider?
    if (!other.CompareTag("Player")) 
       return; //If it's not the player dont continue

    //Is this transform equal to the transform of checkpointArrays[currentCheckpoint]?
    if (transform==playerTransform.GetComponent(Player).checkPointArray[Player.currentCheckpoint].transform) {
       //Check so we dont exceed our checkpoint quantity
       if (Player.currentCheckpoint+1<playerTransform.GetComponent(Player).checkPointArray.length) {
         //Add to currentLap if currentCheckpoint is 0
         if(Player.currentCheckpoint==0)
          Player.currentLap++;
         Player.currentCheckpoint++;
       } else {
         //If we dont have any Checkpoints left, go back to 0
         Player.currentCheckpoint=0;
       }
       visualAid(); //Run a coroutine to update the visual aid of our Checkpoints
       //Update the 3dtext
       Camera.main.GetComponent("CPLap").text = "Checkpoint: "+(Player.currentCheckpoint)+" Lap: "+(Player.currentLap);
    }
}

function visualAid () {
    //Set a simple visual aid for the Checkpoints
    for (objAlpha in playerTransform.GetComponent(Player).checkPointArray) {
       objAlpha.renderer.material.color.a = 0.2;
    }
    playerTransform.GetComponent(Player).checkPointArray[Player.currentCheckpoint].renderer.material.color.a = 0.8;
}

The only change I made was on the CP 26th code line, to try and get it to find the GUI.label working as the counter, but it fails to work.

Here is the CPLap script I made:

#pragma strict

function OnGUI () {
    GUI.Label (Rect (10, 10, 100, 400), "Checkpoint: 0 Lap: 0");
}

Sadly, it’s not working and I have to deliver the project on Friday and I can’t finish this part, and I cannot buy a racing script pack like those professional ones. The project is for the course I’m taking.

I thank in advance whoever helps me with this, as all the people I know who code are unavailable and my programing mentor is busy all week, making this very urgent.

Laps and checkpoint system

Check this out

wait, if you do

GUI.Label (Rect (10, 10, 100, 400), "Checkpoint: 0 Lap: 0");

then it should be obvious that the lap does not change, try something like:

GUI.Label (Rect (10, 10, 100, 400), "Checkpoint: "+ Player.currentCheckpoint+" Lap: "+Player.currentLap);