Ejemplo n.º 1
0
    void getOptimalPointOfSail()
    {
        if (posAngle < pointsOfSail.dataArray[5].Rangemin || posAngle > pointsOfSail.dataArray[6].Rangemax)
        {
            irons = true;
        }

        //assign point of sail
        for (int i = 0; i < pointsOfSail.dataArray.Length; i++)
        {
            if (pointsOfSail.dataArray[i].Rangemin <= posAngle && posAngle <= pointsOfSail.dataArray[i].Rangemax)
            {
                irons = false;
                currentPointOfSail = pointsOfSail.dataArray[i];
                optimalSpeed       = windSpeed * pointsOfSail.dataArray[i].Optimalspeed;
                if (0 < i)
                {
                    adjacentPointsOfSail.Add(pointsOfSail.dataArray[i - 1]);
                }
                if (i < pointsOfSail.dataArray.Length - 1)
                {
                    adjacentPointsOfSail.Add(pointsOfSail.dataArray[i + 1]);
                }
                break;
            }
        }
        //check actual point of sail and apply speed
        float f = CheckActualPOS(currentPointOfSail, adjacentPointsOfSail, posAngle, sailAngle);

        rb.AddForce(transform.up * f * optimalSpeed);
    }
Ejemplo n.º 2
0
 float CheckSailAngle(PointsOfSailData optimal, List <PointsOfSailData> adjacent, float sA)
 {
     if (optimal.Sailanglemin <= sA && sA <= optimal.Sailanglemax)
     {
         return(1.4f);
     }
     else
     {
         foreach (PointsOfSailData item in adjacent)
         {
             if (item.Sailanglemin <= sA && sA <= item.Sailanglemax)
             {
                 return(0.7F);
             }
         }
         return(0.3F);
     }
 }
Ejemplo n.º 3
0
 //return a modifier for the optimal speed
 float CheckActualPOS(PointsOfSailData optimal, List <PointsOfSailData> adjacent, float h, float sA)
 {
     if (optimal.Rangemin <= h && h <= optimal.Rangemax)
     {
         hSpeedModifier = optimal.Optimalspeed;
         finalModifier  = hSpeedModifier * CheckSailAngle(optimal, adjacent, sA);
         return(finalModifier);
     }
     else
     {
         foreach (PointsOfSailData item in adjacent)
         {
             if (item.Rangemin <= h && h <= item.Rangemax)
             {
                 Debug.Log("Adjacent");
                 hSpeedModifier = 0.8f;
                 finalModifier  = hSpeedModifier * CheckSailAngle(optimal, adjacent, sA);
                 Debug.Log("Adjacent final modifier = " + finalModifier);
                 return(finalModifier);
             }
         }
         return(0);
     }
 }