Самое простое решение: если мышь находится в точке Mx, My, а корабль в точке Sx, Sy, то рассчитайте направление от корабля к мыши: Dx = Sx-Mx Dy = Sy-My
Теперьнормализуйте D (это означает, что масштабируйте его так, чтобы его длина была одна):
DLen=sqrt(Dx*Dx + Dy*Dy)
Dx/=DLen;
Dy/=DLen;
Теперь Dx - это расстояние, на которое вы хотите переместить пулю по оси x, чтобы получить скорость пули, равную 1.
Таким образом, каждый кадр, в котором вы перемещаете маркер, выглядит следующим образом (позиция маркера: Bx, By Speed of Bullet: Bs [в пикселях на миллисек]. Время кадра Ft [в миллисекунах])дать вам пулю, которая движется к положению мыши со скоростью, не зависящей от направления мыши или частоты кадров в игре.
РЕДАКТИРОВАТЬ: Как @MSalters говорит, что вы должны проверить для случая DLen == 0, когда мышь находится прямо над кораблем, чтобы избежать деления на ноль ошибок при нормализации