Piszę sobie grę i mam problem z obrotami. Piszę ją w Allegro i na razie zrobiłem tak:
- wciśnięcie strzałki w górę powoduje zwiększenie zmiennej przyspieszenie
- strzałka w dół powoduje zmniejszenie wartości zmiennej przyspieszenie
- strzałka w lewo zmniejsza zmienną kierunek
- strzałka w prawo zwiększa zmienną kierunek
Teraz chciałbym to zrobić tak, aby podczas obiegu pętli do x oraz y były dodawane odpowiednie liczby, aby przesuwać obiekt po ekranie. Jeśli zmienna kierunek będzie miała wartość 180 to samochód będzie się cofał, czyli operacje na zmiennych x i y będą wyglądały tak:
x += predkosc // predkosc to suma zmiennych przyspieszenie, które są dodawane do prędkości co obieg pętli
y += 0
Dzieje się tak, ponieważ x to zmienna od położenia pionowego, więc musi być do niej dodawana prędkość. Y to położenie obiektu w poziomie, a samochód ma cofać, więc żadna zmiana położenia w poziomie nie jest potrzebna.
Analogicznie zmiana zmiennych następuje, gdy zmienna kierunek równa się 0, 90, 180, 270 lub 360. Ale mam problem z sytuacją, gdy kierunek ma inną wartość. Rozumiem, że muszę wydzielić specjalną zmienną, którą będę mnożył/dzielił/dodawał/odejmował/zwracał resztę podczas zmiany zmiennych x i y. Gdy zmienna kierunek ma 45, wtedy obiekt musi się poruszać w kierunku północno-wschodnim (u mnie obiekt jest początkowo zwrócony na północ (czyli wtedy, gdy kierunek = 0)).
Do x dodaje wtedy predkosc i do y też dodaję predkosc. Wtedy samochód idealnie porusza się pod kątem 45 stopni. Co jeśli kierunek ma np. 39. Wtedy samochód musi się poruszać prawie pod kątem 45 stopni, lecz zmiana x i y nie będzie taka sama. Do x będę dodawał przykładowo 3, ale do y już 4. Będzie to sprawiało pozory takiego kąta, ale nie będzie idealnie pracować. I tu pojawia się pytanie. Jak obliczyć liczbę, dzięki której będę uzyskiwał liczby, które muszę dodać do x i y.
Proszę, aby ktoś wytłumaczył łopatologicznie jak zrobić w grze ruch obiektów: przyspieszanie, hamowanie, obroty. Głównie chodzi mi o uzyskanie obrotów. Resztę fizyki dopracuję sam.
Z góry dziękuje za pomoc. Proszę, abyście mnie nie odsyłali do innych tematów. Wolę, żeby ktoś mi to wytłumaczył :).