示例#1
0
    public float GetNextCornerAmount()
    {
        TrackArea currentArea = trackAreaManager.GetCurrentTrackArea(targetAmountAlongSpline % 1);

        if (currentArea != null)
        {
            return(currentArea.cornerAmount);
        }

        return(trackAreaManager.GetNextTrackArea(targetAmountAlongSpline % 1).cornerAmount);
    }
示例#2
0
    /// <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;
        }
    }
示例#3
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)));
    }
示例#4
0
    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);
    }