void LateUpdate()
    {
        float _localLookDesty;
        float _localLooky = transform.localEulerAngles.y;

        if (_localLooky > 180)
        {
            _localLooky = _localLooky - 360;
        }
        transform.LookAt(_parent.position + Gps.LookAheadOffset(30));
        float _localLookx = transform.localEulerAngles.x;

        if (_localLookx > 30 && _localLookx <= 180)
        {
            _localLookx = 30;
        }
        if (_localLookx > 180 && _localLookx < 330)
        {
            _localLookx = 330;
        }
        _localLookDesty = transform.localEulerAngles.y;
        if (_localLookDesty > 180)
        {
            _localLookDesty = _localLookDesty - 360;
        }

        if (_localLookDesty > 80)
        {
            _localLookDesty = 80;
        }
        if (_localLookDesty < -80)
        {
            _localLookDesty = -80;
        }
        if (Mathf.Abs(_localLookDesty - _localLooky) > 50)
        {
            _localLookDesty = Mathf.Lerp(_localLooky, _localLookDesty, Time.deltaTime);
        }
        if (_localLookDesty < 0)
        {
            _localLookDesty = 360 + _localLookDesty;
        }

        transform.localEulerAngles = new Vector3(_localLookx, _localLookDesty, transform.localEulerAngles.z);
#if UNITY_EDITOR
#elif UNITY_ANDROID || UNITY_IOS || UNITY_IPHONE
        if (!_horizonTilt)
        {
            return;
        }
        Vector3 accel            = Vector3.Lerp(OldAccel, Input.acceleration, 0.5f);
        float   accelx           = Mathf.Clamp(accel.x, -1, 1);
        float   DesiredTiltAngle = -Mathf.Asin(accelx) * Mathf.Rad2Deg;
        //if (accel.y > 0) { if (accel.x < 0) DesiredTiltAngle = -180 - DesiredTiltAngle; else DesiredTiltAngle = -DesiredTiltAngle + 180; }
        float TiltAngle = OldTiltAngle * 0.7f + DesiredTiltAngle * 0.3f;
        transform.Rotate(Vector3.forward, TiltAngle);
        OldAccel     = Input.acceleration;
        OldTiltAngle = TiltAngle;
#endif
    }