public void ControlTarget() { Target target = cubeTargetFinder.GetNearestTarget(); if (!target || !target.isEmpty) { isDestroyable = true; cubeAnimations.JustGoDown(); } else { currentTarget = target; currentTarget.Fill(); if (currentTarget.direction == Vector2.zero) { cubeAnimations.SettleDownTarget(target, () => { mainCube.OnMovementDone?.Invoke(); }); } else { loopDir = currentTarget.direction; cubeAnimations.SettleDownTarget(target, CreateLoop); } } }