NukeBoards - Kreatywność przede wszystkim
FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  DownloadDownload
RejestracjaRejestracja  ZalogujZaloguj

Odpowiedz do tematu
Poprzedni temat :: Następny temat
[TGF2/MMF2] Ruch wektorowy albo lot pojazdem w próżni.
Autor Wiadomość
jarlfenrir 
Generał brygady


Pomógł: 82 razy
Posty: 1731

37283 Prestiż
Wysłany: 06-09-2008, 01:06   [TGF2/MMF2] Ruch wektorowy albo lot pojazdem w próżni.

http://ultrashare.de/f/5897/Asteroids.mfa.html
http://img181.imageshack....ektorowypc6.jpg
Właśnie przejrzałem przykład z głównej strony NukeSoftu prezentujący jak zrobić "lot w próżni, a nie czarnym powietrzu". I stwierdziłem, że jest trochę zbyt przestarzały.

Mój przykład możecie zamieszczać gdzie wam się podoba i robić z nim co chcecie. Ale jeśli ktos zamierza wykorzystać go w celach komercyjnych, niech się ze mną skontaktuje ;)

Potrzebujemy obiekt aktywny - nasz pojazd z 4 zmiennymi (jeżeli ktoś uparcie chce to zrobić pod TGF 1.06 niech użyje 4 liczników). Dwie pierwsze zmienne, to wartość wektora (ja je nazywam A i B) ruchu, a w dwóch kolejnych pamiętana będzie pozycja obiekty (musi być w zmiennych, by pozycja była pamiętana z dokładnością ileś tam po przecinku ;) ).

Tworzymy dwa zdarzenia obrotu obiektu (zamiast kierunków używamy funkcji setAngle - ja dodaję/odejmuję 4 stopnie na raz - dzięki temu uzyskuję 90 możliwych kierunków lotu). Pojazd musi dać się obracać w lewo i prawo.

Kolejne zdarzenie to zadziałanie na pojazd pewnym wektorem ruchu. dla wektora długości jeden współrzędne to będzie cosinus kąta, w jakim zwrócony jest pojazd i minus sinus tego kąta.

Wektor nowej siły musimy dodać do starego wektora (zapamiętanego w wartościach A i B).

Można także zmieniać samą długość wektora bez wpływania na kierunek lotu mnożąc współrzędne o tą samą wartość. Jeśli wartość będzie z zakresu [0,1) spowoduje to zmniejszenie prędkości pojazdu - aktualny kąt nachylenia nie będzie wpływał na ruch.

Ostatnie zdarzenie to przemieszczenie pojazdu o wektor poprzez dodanie jego współrzędnych do współrzędnych pojazdu. Dla maksymalnej dokładności ruchu zalecam podzielić wartość wektora tak, by dodawana wartość (dla obu współrzędnych) nie przekraczała 1. Jeśli boisz się, że po tym zabiegu pojazd będzie leciał zbyt wolno - użyj pętli, by go przyśpieszyć :D (jeżeli dodawane wartości będą większe od 1 pojazd w rzeczywistości będzie się poruszał po linii przypominającej schody)

Jeśli sądzisz, że niezrozumiale to opisałem, ściągnij przykład lub przejrzyj dołączony obrazek.

Jedna uwaga o prędkości obiektu: jeśli istotne jest, z jaką prędkością twój obiekt się porusza, możesz to obliczyć ze wzoru sqr(A*A+B*B) - ale to chyba wszyscy wiedzą ;)
By ograniczyć prędkość ruchu, może sprawdzic się zdarzenie typu:

Kod:
Sqr(A( "Player" )*A( "Player" )+B( "Player" )*B( "Player" ))
Greater
30
-->
Set A to A( "Player" )*0.9
Set B to B( "Player" )*0.9


A gdzie taki ruch zastosować? Oczywiście w grze typu "Asteroids".
 
     
Don_Sotto 
Bohater


Pomógł: 7 razy
Posty: 221

2783 Prestiż
Wysłany: 22-09-2008, 10:57   

W zasadzie typowe "hamowanie" w grze można by nawet zastosować, ale pod warunkiem, że podczas "hamowania" zaczęłyby pracować jakieś silniki z przodu statku ;)
_________________
A ty - czy lubisz grać w słabe gry? Nie czyń drugiemu, co Tobie nie miłe. / www.donsotto.pl /
 
 
     
jarlfenrir 
Generał brygady


Pomógł: 82 razy
Posty: 1731

37283 Prestiż
Wysłany: 22-09-2008, 18:50   

Don_Sotto napisał/a:
W zasadzie typowe hamowanie w grze można by nawet zastosować, ale pod warunkiem, że podczas hamowania zaczęłyby pracować jakieś silniki z przodu statku ;)

Nie. Silniki musiałyby być ustawione dokładnie przeciwnie do kierunku lotu (znaczy kiedy obracam statkiem, silnik nie mógłby się obracać razem z nim).
 
     
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

PSK Cytaty Klikibaza - kopia wszystkich klików Klikipedia - encyklopedia o tworzeniu gier Discord KlikCzat Zaproszenie Wielkie Muzeum Klikowe

Powered by phpBB modified by Przemo © 2003 phpBB Group