Example #1
0
      static void Main(string[] args)
      {
          var pred1 = new Predictable();

          Predictable.Zapros();
          pred1.Choise();
      }
Example #2
0
    public override void Aim()
    {
        if (fixedTarget == null)
        {
            return;
        }

        if (shootSpeed == 0)
        {
            return;
        }

        if (predictable == null)
        {
            predictable = fixedTarget.GetComponent <Predictable>();
        }

        // angle beta
        float beta = GetAim();

        if (beta != 0)
        {
            float alpha = predictable.alpha;

            Vector3 distanceVect = fixedTarget.transform.position - rotateFrom.position;
            distanceVect.y = 0;

            // Get time of impact
            float h   = distanceVect.magnitude * Mathf.Sin(alpha * Mathf.Deg2Rad);
            float vpx = shootSpeed * Mathf.Sin((alpha + beta) * Mathf.Deg2Rad);
            float t   = h / vpx;

            // distance RotateFrom - Target'
            float r_vp    = 0.5f / (shootSpeed * t);
            float epsilon = beta - Mathf.Asin(r_vp);

            // Rotation of angleDeg deg
            Quaternion rot            = Quaternion.AngleAxis(epsilon, Vector3.up);
            Vector3    destRotated    = rot * distanceVect;
            var        targetRotation = Quaternion.LookRotation(destRotated);

            // Get parameter str
            var str = Mathf.Min(10 * Time.fixedDeltaTime, 1);
            rotateFrom.rotation = Quaternion.Lerp(rotateFrom.rotation, targetRotation, str);
            // Draw line
            Debug.DrawLine(shootFrom.localPosition, destRotated * 10, Color.red);
        }
    }
Example #3
0
    public override float GetAim()
    {
        if (fixedTarget != null)
        {
            // Get predictable object
            if (predictable == null)
            {
                predictable = fixedTarget.GetComponent <Predictable>();
            }

            // Get prediction
            shootRotation = predictable.GetPrediction(shootSpeed, rotateFrom);
        }
        else
        {
            predictable = null;
        }

        return(shootRotation);
    }