Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML] Ustawianie prędkości sprita

Ostatnio zmodyfikowano 2012-08-22 21:58
Autor Wiadomość
RazzorFlame
Temat założony przez niniejszego użytkownika
» 2012-08-22 21:33:52
akwes coś tam rozumiem z trygonometrii. Jak napisałem u góry już troche kumam z tego ale NIE DZIAŁA kiedy wyliczam kąt funkcją atan2(). Albo to ja nie umiem jej wykorzystać albo coś jest źle. Tu macie kod jaki jest w funkcji SetDir (wykorzystuje ją w konstruktorze):
C/C++
v_x = 3 * cos(( M_PI *( dir * 6 ) ) / 180 );
v_y = 3 * sin(( M_PI *( dir * 6 ) ) / 180 );
spr.SetCenter( w / 2, h / 2 );
spr.SetRotation( dir / 6 );
x = x + w / 2;
y = y + h / 2;
Teraz może być coś źle bo wcześniej (przed postem DejaVu-iego o tym żeby nie używać tablic) miałem tak:
C/C++
v_x = 3 * cos_a[(( dir - 90 ) / 6 ) ];
v_y = 3 * sin_a[(( dir - 90 ) / 6 ) ];
spr.SetCenter( w / 2, h / 2 );
spr.SetRotation( dir / 6 );
x = x + w / 2;
y = y + h / 2;
P-63356
Mrovqa
» 2012-08-22 21:36:22
Jeśli chodzi o ruch obiektu po linii (nachylonej pod jakimś kątem) to wystarczą ci tylko cos oraz sin, a one są banalne. Ja też trygonometrii nie miałem (jeszcze :P), ale jakoś to pojąłem ;)

Zasada sin/cos jest prosta:
patrz pierwszy obraz. To "dziwne O" to argument funkcji. Od początku układu współrzędnych prowadzisz półprostą nachyloną o kąt "dziwnego O" i zaznaczasz dowolny punkt na tej półprostej:
C/C++
sin = y / r;
cos = x / r;
x,y - współrzędne punktu; r - odległość punktu od początku układu współrzędnych.
W wykorzystaniu w grach to działa na zasadzie prostych proporcji. Tyle Ci wystarczy ;) Rozumiesz?

//edit:
lol, 2 posty mnie poprzedziły, trochę mi zajęło napisanie tego :P
P-63357
DejaVu
» 2012-08-22 21:37:52
Frazy, które należy wpisać w wyszukiwarkę google:

:)

/edit:
http://cpp0x.pl/forum/temat/?id=1005
P-63358
akwes
» 2012-08-22 21:40:14
P-63359
RazzorFlame
Temat założony przez niniejszego użytkownika
» 2012-08-22 21:58:25
Dobra dobra juz po części działą lecz pocisk leci dokładnie w inną strone. Nawet zrobiłem "-(atan(...))" xd Najlepsze jest to że dobrze leci tylko jesli myszka jest u góry albo na dole. Mowiac w inna strone chodzi mi o to że kiedy myszka jest na dole to pocisk leci w kierunku dolnej krawędzi, tyle ze w dokładnie inną strone :D

Okej już jakoś zadziałało.
Nie wiem dlaczego ale działa jak od kąta odjęłem 135 stopni
EDIT:
Rozwiązanie jest takie:
C/C++
v_x = cos((( dir * M_PI ) / 180 ) - 135 );
v_y = sin((( dir * M_PI ) / 180 ) - 135 );
P-63361
1 2 « 3 »
Poprzednia strona Strona 3 z 3