Mamy sytuację jak na rysunku.
Współrzędne pocisku zmieniają się od czasu. Jeśli jest to ruch nieprzyspieszony, jego równania ruchu są następujące:
x(t) = X0 + Vx*t
y(t) = Y0 + Vy*t
gdzie Vx i Vy to składowe wektora prędkości a X0 i Y0 to punkt położenia początkowego pocisku, nazwijmy go Pp. Jak obliczyć składowe pokażę za moment. Zajmijmy się na razie samym wektorem prędkości.
Wektor ten charakteryzuje się długością r (czyli wartością prędkości - szybkością) oraz kątem z nachylenia, powiedzmy od poziomu.
Długość nadajesz mu Ty, jako programista. Natomiast kąt będzie wyznaczany na podstawie współczynnika kierunkowego prostej, łączącej współrzędne pocisku Pp ze współrzędnymi kursora Pk. :)
Mając Pp = (Xp, Yp) oraz Pk = (Xk, Yk), współczynnik kierunkowy prostej łączącej te dwa punkty wyznaczasz ze wzoru (wyprowadzone z układu dwóch równań):
a = (Yp - Yk) / (Xp - Xk)
Współczynnik ten jest równy tg(z), a więc kąt jest równy:
z = arctg(a) = arctg((Yp - Yk) / (Xp - Xk))
Tym sposobem dostajesz kąt, masz więc w pełni określony wektor prędkości. Możesz rozbić go na składowe wzdłuż osi współrzędnych. Ich kąty są znane, bo wynoszą 0 i 90 stopni, więc należy określić tylko ich długość. Z definicji funkcji sinus i cosinus:
Vx = r*cos(z)
Vy = r*sin(z)
Teraz tylko podstawić do równań ruchu. :)
x(t) = Xp + r*cos(z)*t
y(t) = Yp + r*sin(x)*t
W momencie kiedy user kliknie myszą, pobierasz współrzędne kursora, obliczasz kąt i zapisujesz go jako jedna z danych pocisku, wraz z punktem początkowym. Potem tylko co klatkę (czy kiedy to tam uaktualniasz) wyliczasz nową pozycję według powyższych równań ruchu. :) Pamiętaj że r, czyli wartość szybkości, nadajesz Ty. ;)
EDIT: trochę mi zeszło pisanie tego, jak widzę już są 4 odpowiedzi... Gdybym wiedział, to bym tyle się nie rozpisywał. :P