Esempio n. 1
0
 // Update is called once per frame
 void Update()
 {
     if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
     {
         rudder.SteerLeft();
     }
     else if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
     {
         rudder.SteerRight();
     }
     else if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
     {
         // sails up
         sails.SpreadSails();
     }
     else if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow))
     {
         // sails down
         sails.ReefSails();
     }
     else if (Input.GetKeyDown(KeyCode.Space))
     {
         // fire!
         if (weapons != null)
         {
             weapons.FireCannons();
         }
     }
 }
Esempio n. 2
0
    protected void Sail()
    {
        if (Vector3.Distance(destination, transform.position) > 1.5f)
        {
            var angle = Utils.Math.AngleSigned(transform.up, transform.position - destination);

            if (angle < 5f && angle > -5f && (rudder.Angle > 20f || rudder.Angle < -20f))
            {
                ;// don't turn anymore, let it gooooooo
            }
            else if (angle < -1f)
            {
                rudder.SteerRight();
            }
            else if (angle > 1f)
            {
                rudder.SteerLeft();
            }

            // calculate force pushing the boat
            // it should depend on the wind and boat params
            var forwardForce = (10f - rigidBody.velocity.magnitude) * speedModifier
                               * transform.up * shipConfig.GetSailForce(GetAngleOfAttack());
            forwardForce.y = 0f;

            rigidBody.AddForce(forwardForce);
            //Debug.Log("velocity: " + rigidBody.velocity.magnitude);
        }
        else
        {
            DestinationReached();
        }
    }