protected virtual void Update()
    {
        selfTransform.position = selfTransform.position + movementDirection * speed * Time.deltaTime;
        if (BoundsBroken == null)
        {
            return;
        }

        var isInBounds = boundsChecker.ValidateBounds(selfTransform.position);

        if (!isInBounds)
        {
            BoundsBroken?.Invoke(this);
        }
    }