I would not call it smooth but maybe you can play with the settings...

Maybe:
Option Explicit
Private Type POINTAPI
    X As Long
    Y As Long
End Type
Private Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long
Sub MouseMoveObjectTest()
    Dim lngCurPos As POINTAPI
    Dim DocZero As POINTAPI
    Dim PointsPerPixelY As Double
    Dim PointsPerPixelX As Double
    Dim hdc As Long
    Dim sp As Shape, a As Shape
    Dim CenterRowStationary As Double
    Dim CenterColStationary As Double
    Dim CenterRowMoving As Double
    Dim CenterColMoving As Double
    Dim MovementSpeed As Double
    Dim TriangleHeight As Double
    Dim TriangleWidth As Double
    Dim TriangleHyp As Double
    Dim NewTriangleHeight As Double
    Dim NewTriangleWidth As Double
    
    For Each sp In ActivePresentation.Slides(1).Shapes
        sp.Delete
    Next
     
    Set a = ActivePresentation.Slides(1).Shapes.AddShape(92, 50, 50, 20, 20)
    a.Fill.ForeColor.RGB = RGB(0, 75, 150)
    hdc = GetDC(0)
    PointsPerPixelY = 72 / GetDeviceCaps(hdc, 90)
    PointsPerPixelX = 72 / GetDeviceCaps(hdc, 88)
    ReleaseDC 0, hdc
    DocZero.Y = ActiveWindow.PointsToScreenPixelsY(0)
    DocZero.X = ActiveWindow.PointsToScreenPixelsX(0)
    
    Do
        GetCursorPos lngCurPos
        CenterRowStationary = (lngCurPos.Y - DocZero.Y) * PointsPerPixelY
        CenterColStationary = (lngCurPos.X - DocZero.X) * PointsPerPixelX
        CenterRowMoving = a.Top + a.Height / 2
        CenterColMoving = a.Left + a.Width / 2
        MovementSpeed = 1
        TriangleHeight = Abs(CenterRowStationary - CenterRowMoving)
        TriangleWidth = Abs(CenterColStationary - CenterColMoving)
        TriangleHyp = Sqr(TriangleHeight ^ 2 + TriangleWidth ^ 2)
        If TriangleHeight = 0 Then
            NewTriangleHeight = 0
        Else
            NewTriangleHeight = (TriangleHeight / TriangleHyp) * MovementSpeed
        End If
        
        If TriangleWidth = 0 Then
            NewTriangleWidth = 0
        Else
            NewTriangleWidth = (TriangleWidth / TriangleHyp) * MovementSpeed
        End If
        With a
            If (.Top + .Height / 2) > CenterRowStationary Then .Top = .Top - NewTriangleHeight
            If (.Top + .Height / 2) < CenterRowStationary Then .Top = .Top + NewTriangleHeight
            If (.Left + .Width / 2) > CenterColStationary Then .Left = .Left - NewTriangleWidth
            If (.Left + .Width / 2) < CenterColStationary Then .Left = .Left + NewTriangleWidth
        End With
        DoEvents
    Loop
End Sub