public void Run(Vector2 target2D, bool isCanMoveBall)
 {
     DirectionScreenTo3D(target2D);
     CalculateDirection();
     CalculateForce();
     if (isCanMoveBall)
     {
         _ballMovable.Move(_direction * _force);
     }
     _playerMovable.Move(_target3D);
     _arrowStretchable.Scale(_force, _ballBaseStats.MAXForce);
     _arrowStretchable.Rotate(_playerTransformPosition.GetPosition());
     _aiMovable.Move(_ballTransform.GetPosition());
 }
    public void Rotate(Vector3 target3D)
    {
        ITransformPosition transformPosition = (ITransformPosition)_arrowTransformable;
        ITransformRotation transformRotation = (ITransformRotation)_arrowTransformable;
        Quaternion         result            = Quaternion.LookRotation(target3D - transformPosition.GetPosition(), Vector3.up);

        result.eulerAngles = new Vector3(0, result.eulerAngles.y + 90, 0);
        transformRotation.ApplyRotation(result);
    }