35 lines
1.3 KiB
C#

using UnityEngine;
public class Checkpoint : MonoBehaviour
{
[Tooltip("The order index of this checkpoint along the track.")]
public int checkpointIndex = 0;
[Tooltip("The amount of checkpoints the player can skip without penalty.")]
public int skippableCheckpointsQty = 5;
private void OnTriggerEnter(Collider other)
{
RacerProgress progress = other.GetComponent<RacerProgress>();
if (progress != null && RaceManager.Instance != null)
{
int totalCheckpoints = RaceManager.Instance.numberOfCheckpoints;
// Check if this checkpoint is within the skippable range or expected next.
int distanceToCheckpoint = (checkpointIndex - progress.currentCheckpointIndex + totalCheckpoints) % totalCheckpoints;
if (distanceToCheckpoint == 0 || (distanceToCheckpoint <= skippableCheckpointsQty + 1))
{
// Update the current checkpoint index
progress.currentCheckpointIndex = (checkpointIndex + 1) % totalCheckpoints;
// If the racer just passed the final checkpoint, increment the lap count.
if (checkpointIndex == totalCheckpoints - 1)
{
progress.lapCount++;
}
}
}
}
}