Esempio n. 1
0
    public void ApplyWindOnSail()
    {
        Vector3 horizontalVelocity = new Vector3(rb.velocity.x, 0.0f, rb.velocity.z);
        Vector3 relativeWind       = wind.getWindVector() - horizontalVelocity;

        Vector3 sailForce = mast.getSailForce(relativeWind);
        Vector3 boatForce = Vector3.Project(sailForce, transform.forward);

        rb.AddForce(boatForce);


        Vector3 rudderDirection = rudder.getRudderDirection();

        rb.AddForceAtPosition(rudderDirection * Vector3.Dot(rudderDirection, transform.forward) * horizontalVelocity.magnitude, rudder.getRudderForcePoint());

        //For debuggin
        //Vector3 lineStart = new Vector3(transform.position.x - 15, transform.position.y + 5, transform.position.z + 5);

        //Debug.DrawLine(lineStart, lineStart + (sailForce / sailSize) * 5, Color.blue);
        //Debug.DrawLine(lineStart, lineStart + (boatForce / sailSize) * 5, Color.red);
        //Debug.DrawLine(lineStart, lineStart - (relativeWind / windSpeed) * 5, Color.green);
        //End debugging
    }