public float GetNextCornerAmount() { TrackArea currentArea = trackAreaManager.GetCurrentTrackArea(targetAmountAlongSpline % 1); if (currentArea != null) { return(currentArea.cornerAmount); } return(trackAreaManager.GetNextTrackArea(targetAmountAlongSpline % 1).cornerAmount); }
/// <summary> /// Initialize the agent /// </summary> /// public override void Initialize() { rigidbody = GetComponent <Rigidbody>(); trackArea = GetComponentInParent <TrackArea>(); // If not in training mode, no max step, play forever if (!trainingMode) { MaxStep = 0; } }
public float GetDistanceToNextCorner() { TrackArea currentArea = trackAreaManager.GetCurrentTrackArea(targetAmountAlongSpline % 1); if (currentArea != null) { return(0); } TrackArea trackArea = trackAreaManager.GetNextTrackArea(targetAmountAlongSpline % 1); centerLane.GetPoint(trackArea.start); return(Vector3.Distance(car.transform.position, centerLane.GetPoint(trackArea.start))); }
public TrackArea GetNextTrackArea(float amountRoundTrack) { TrackArea closest = null; float closestDiff = 1; foreach (TrackArea trackArea in trackAreas) { float diff = trackArea.start - amountRoundTrack; if (diff < 0) { diff = 1 + diff; } if (closest == null || diff < closestDiff) { closest = trackArea; closestDiff = diff; } } return(closest); }