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 }