Ну для начала, тебе стоит помнить, что у тебя ДВЕ координатных системы.
1. Координаты окна. Они используются при рисовании шарика в окне и при получении позиции мыши.
2. Координаты мира. Они определяют позицию объектов в мире и используются при определении коллизий шарика с другими шариками и "едой".
Ты можешь принять решение, что эти координатные системы совпадают, и я подозреваю что ты так и сделал. Но это будет иметь последствия.
С положительной стороны, тебе не надо преобразовывать координаты из одной системы в другую, и в частности не надо реализовывать скроллинг мира. Но тогда положение мыши относительно шарика меняется, даже если пользователь ничего не делает. Потому что шарик будет "догонять" мышь, вместо того чтобы скроллить мир в этом направлении.
А шарик перестанет двигаться, достигнув позиции мыши - потому что у него уже не будет направления на мышь, так как их позиции совпадают. Если точнее, шарик будет легонько колебаться вокруг позиции мыши.
Так что либо смирись с тем, что шарик может "догнать" мышь, либо реализуй полноценное преобразование координат. Тогда отрисовываться у тебя будет не весь мир, а только "окно", центрированное на позиции игрока.