W takim razie sprobuje to wyjasnic na ponizszym obrazku :)
| ^
| /
| d/ \
| / | alfa
y| * ...+
| d
+---------------------
x
d - odleglosc do przebycia w jednostce czasu, predkosc
alfa - kat pomiedzy wektorem gwiazdka-daszek a osia x
x, y - wspolrzedne na ekranie
* - statek
Tworzysz 2 tablice kazda 256 pozycji
1 zawierajaca sin(tablepos*360/256) - tablepos od 0 do 255
2 zawierajaca cos(tablepos*360/256) - tablepos od 0 do 255
Zalozenie jest takie, ze tablica 256 pozycji pokrywa 360 stopni, czyli 1 krok to 360/255 stopnia a alfa moze byc max 255.
- statek porusza sie w kierunku alfa, z predkoscia d.
- wystrzeliwujac pocisk, bedzie on przemieszczal sie w kierunku alfa z predkoscia d2 - z reguly wieksza od d statku)
Co ramke jesli liczone dx i dy wszystkich aktywnych obiektow (statku i pociskow) wg podanego wzoru
dx= d*cos(alfa)
dy= d*sin(alfa)
a z nich nowe wspolrzedne:
x=x+dx; y=y+dy;
; mnozenie mozna wyeliminowac gdy pociski poruszaja sie ze stala predkoscia,
; wartosc cos (alfa) pobiera sie z tablicy costable[alfa]
Nastepnie robione sa sprawdzenia:
- Jesli wspolrzedne pocisku poza ekranem, usuwasz pocisk
- Jesli wspolrzedne pocisku=bbox statku przeciwnika, usuwasz pocisk, zwiekszasz damage obiektu (ew. usuwasz jako trafiony/zniszczony)
Nastepnie testowanie co gracz wcisnal:
- Gdy gracz naciska lewy kursor, alfa=alfa-1;
- Gdy gracz naciska prawy kursor, alfa=alfa+1;
- Gdy gracz naciska kursor w gore, d=d+1;
- Gdy gracz naciska kursor w dol, d=d-1;
- Gdy gracz naciska fire, dodajesz nowy pocisk o wspolrzednych x,y statku, kierunku alfa i predkosci d2
Oczywiscie wartosc 1 moze byc zastapiona inna w zaleznosci od potrzeb.
Ostatnia aktualizacja: 11.03.2019 23:36:29 przez docent
Ostatnia aktualizacja: 11.03.2019 23:40:25 przez docent