protected virtual void FixedUpdate()
        {
            var currentPoint = (Vector2)transform.position;
            var vector       = targetPoint - currentPoint;

            if (vector.magnitude <= MinimumDistance)
            {
                ChangeTargetPoint();

                vector = targetPoint - currentPoint;
            }

            // Limit target speed
            if (vector.magnitude > MaximumSpeed)
            {
                vector = vector.normalized * MaximumSpeed;
            }

            // Acceleration
            if (body == null)
            {
                body = GetComponent <Rigidbody2D>();
            }

            body.velocity = D2dHelper.Dampen2(body.velocity, vector * SpeedBoost, Acceleration, Time.deltaTime);
        }
        protected virtual void Update()
        {
            var h = Input.GetAxisRaw("Horizontal");
            var v = Input.GetAxisRaw("Vertical");

            velocity.x += h * Acceleration * Time.deltaTime;
            velocity.y += v * Acceleration * Time.deltaTime;

            velocity = D2dHelper.Dampen2(velocity, Vector2.zero, Dampening, Time.deltaTime);

            transform.Translate(velocity);
        }