// Update is called once per frame
    void Update()
    {
        if (_target == null)
        {
            Destroy(gameObject);
            return;
        }

        transform.localPosition += transform.up * _speed * Time.deltaTime;

        if ((_target.position - transform.localPosition).sqrMagnitude < _minDistSqrt)
        {
            _target.GetComponent <AirCraft>().Kill();
            Destroy(gameObject);
        }

        switch (_followMode)
        {
        case RocketLauncher.RocketFollowMode.Off:
            break;

        case RocketLauncher.RocketFollowMode.LocalLeadPoint:

            Vector3 _leadPoint = RocketLauncher.FirstOrderIntercept(transform.position, Vector3.zero, _speed,
                                                                    _target.position, RocketLauncher.GetTargetVelocity());

            float rotateZ = transform.rotation.eulerAngles.z;
            transform.LookAt(_leadPoint);
            if (_leadPoint.x < transform.position.x)
            {
                transform.rotation = Quaternion.Euler(new Vector3(0, 0, MathUtilities.AngleToAngle(
                                                                      rotateZ,
                                                                      90 + transform.rotation.eulerAngles.x,
                                                                      _rotateSpeed * Time.deltaTime)));
            }
            else
            {
                transform.rotation = Quaternion.Euler(new Vector3(0, 0, MathUtilities.AngleToAngle(
                                                                      rotateZ,
                                                                      -transform.rotation.eulerAngles.x - 90,
                                                                      _rotateSpeed * Time.deltaTime)));
            }

            break;
        }
    }