[MMF2] Prosty strzał 360+ kierunków |
Autor |
Wiadomość |
Tropik
Plutonowy
Posty: 79
4246 Prestiż
|
Wysłany: 27-05-2008, 17:44
|
|
|
Mam ten przyład. Wiem że jest bardzo rozbudowany, dlatego próbuję go zrozumieć od podstaw - dlatego te pytania z mojej strony. Chcę wiedzieć jak wszystko działa
To jak z tą kolizją? Na jakiej zasadzie ona działa? |
_________________ tamtomasz.pl |
|
|
|
|
Minty
Stwórczyni omc dr fizyki
Pojedynki: być może
Pomogła: 259 razy Posty: 3446
33789 Prestiż
|
Wysłany: 27-05-2008, 17:54
|
|
|
Czytaj komentarze: "Kolizje - zmniejszanie współczynnika penetracji i kończenie ruchu, gdy osiągnie on limit", a poniżej warunki:
+ Fast Loop: Loop trigger #0
+ Pocisk: is over an obstacle background
A współczynnik penetracji pocisku to jego zmienna B |
|
|
|
|
NeVermore
Bohater
Pomógł: 3 razy Posty: 62
5143 Prestiż
|
Wysłany: 27-05-2008, 21:16
|
|
|
O, nie widziałem wczesniej tego tematu. Przedstawię wam mój własny sposób na strzał w 360+ kierunkach, bez wykorzystywania sinusów i cosinusów, równie dokładny co wasz.
Opiera się on na twierdzeniu Pitagorasa i Talesa Obliczamy R jako odległość gracza od celownika. Następnie ustalamy malutką odległość "c", którą ma pokonywać pocisk w klatce animacji lub kolejnym kroku loopa.Mamy więc stosunek c/R, który jest równy x/X (małe x to przesuniecie w jednej klatce, a duże X to róznica położeń gracza i celownika na osi x). Z prostgo przekształcenia wynika że: x = X*c/R, analogicznie Y. Nie martwimy się, co sie stanie przy wartościach 0* i 90* tak jak z sinusami i cosinusami, gdzie dochodzi prawdopodobnie do dzielenia przez 0 (choć nie wiem dokładnie jak wygląda kod w oryginalnym przykładzie). Pozatym nie musimy mieć pluginu do obliczania miary kata.
Wymysliłem ten system na potrzeby mojego planowanego FPP-ka, czyli Smitha, bo nie mogłem u siebie otworzyć pliku strzał 360+ - brak kcfloop.mfx (nadal go nie mam więc nie otworzę) Mysle że jest raczej poprawny i może komuś się przydać. |
|
|
|
|
Tropik
Plutonowy
Posty: 79
4246 Prestiż
|
Wysłany: 27-05-2008, 22:28
|
|
|
Talesa nie miałem... Wycofali z gim. ten dział...
RomanX w Twoim przykładzie tak: penetracja następuje po ustawieniu zmiennej B na 0, ale nie w przykładzie Fenrira. Dlaczego w fenrirowym to nie działa? |
_________________ tamtomasz.pl |
|
|
|
|
jarlfenrir
Generał brygady
Pomógł: 82 razy Posty: 1731
37283 Prestiż
|
Wysłany: 28-05-2008, 00:13
|
|
|
Tropik napisał/a: | Talesa nie miałem... Wycofali z gim. ten dział...
Dlaczego w fenrirowym to nie działa? |
Bo ja zamierzałem pokazać jak zrobić PROSTY strzał i nawet nie myślałem o czymś takim jak penetracja.
NeVermore:
Myślałem o tym, co robisz, ale niestety zawsze miałem problem z obliczeniem odległości (twoje C). babrałem się w tym pod TGF-em jeszcze i był problem z pierwiastkami.
P.S. Twierdzenie Talesa średnio sie do tego ma, z grubsza wystarczy znajomość Pitagorasa (znaczy się jego twierdzenia). |
|
|
|
|
NeVermore
Bohater
Pomógł: 3 razy Posty: 62
5143 Prestiż
|
Wysłany: 28-05-2008, 10:47
|
|
|
Twierdzenie Talesa to właśnie stosunek X/x = R/c Te dwie proste z iksami są równoległe. Jeszcze nie uzywałem loopów, nie wpadłem na to że moga być przydatne w tym przypadku. U mnie C to jak na razie odległość pokonywana w kolejnej klatce animacji, trza to będzie poprawić, jak mi sie uda to dam znać czy działa jak należy |
|
|
|
|
Tropik
Plutonowy
Posty: 79
4246 Prestiż
|
Wysłany: 28-05-2008, 22:27
|
|
|
Ale w sumie sam nie wiem dlaczego MMF nie widzi tego warunku:
Jeżeli strzał nachodzi na przeszkode
+ play loop "jakaś" ------------> pocisk destroy.
Co to za problem. MMF powiniem to czytać. |
_________________ tamtomasz.pl |
|
|
|
|
jarlfenrir
Generał brygady
Pomógł: 82 razy Posty: 1731
37283 Prestiż
|
Wysłany: 29-05-2008, 00:09
|
|
|
Tropik napisał/a: | Ale w sumie sam nie wiem dlaczego MMF nie widzi tego warunku:
Jeżeli strzał nachodzi na przeszkode
+ play loop jakaś ------------> pocisk destroy.
Co to za problem. MMF powiniem to czytać. |
Jedno co wiem na pewno, to to, że ma być:
On Loop "jakaśtam"
+ strzał nachodzi na przeszkodę --->Destroy
(ważne, by On Loop było pierwsze). Do tego pamietaj, że kulka zniknie dopiero po wykonaniu wszytkich pętli, więc warto razem z destroy dać warunek Stop Loop jakaś tam.
A tło na pewno ma zaznaczone, że ma być przeszkodą? Bo ja często zapominam o tym warunku. |
|
|
|
|
Fadex
Legenda #4; #12; #18; #20; #21; #27
Pojedynki: nie
Pomógł: 105 razy Posty: 1773
51612 Prestiż
|
Wysłany: 30-05-2008, 13:56
|
|
|
IMHO z sinusami jest po prostu łatwiej - czasami wydaje się, że to sinus + cosinus zostały stworzone dla Advanced Math, a nie na odwrót...
NeVermore - tak naprawdę nigdy nie stosowałem twierdzenia Talesa (tak właściwie, to nawet go jeszcze nie przerabiałem), ale mimo to kiedyś myślałem nad tym rozwiązaniem. Problemem stało się wyliczenie "c", czyli tej najmniejszej długości...
W przykładzie ruchu, jaki podałem wcześniej nie następuje dzielenie przez sin lub cos. W sumie nie wiem nawet do czego mogłoby się to przydać |
_________________ If it doesn't have to work, I can optimize any code to a runtime of zero. What's your superpower?
wat |
|
|
|
|
NeVermore
Bohater
Pomógł: 3 razy Posty: 62
5143 Prestiż
|
Wysłany: 01-06-2008, 22:02
|
|
|
Fadex - nie zrozumiałeś idei - "c", czyli odległość jaką przemierza pocisk w ciągu jednej klatki, ma być dana, sam ją sobie wymyślasz Znasz "c", obliczasz "R" masz dane duże "X" i "Y", a obliczasz małe "x" i "y". Jako że niektórzy nie mieliście jeszcze Talesa, oto jak dokładnie to zrobić:
R/c = X/x = Y/y - to właśnie zastosowanie twierdzenia Talesa
Jeśli chcemy obliczyć x, czyli przesunięcie pocisku na osi x w ciągu jednej klatki, to:
R/c = X/x => x = cX/R, y = cY/R
|
|
|
|
|
Minty
Stwórczyni omc dr fizyki
Pojedynki: być może
Pomogła: 259 razy Posty: 3446
33789 Prestiż
|
Wysłany: 02-06-2008, 08:07
|
|
|
X/R to definicja cosinusa, Y/R to definicja sinusa. Tak tylko wspominam |
|
|
|
|
Tropik
Plutonowy
Posty: 79
4246 Prestiż
|
Wysłany: 25-06-2008, 15:14
|
|
|
A jeżeli chcę zrobić aby wrogowie posiadali również silnik 360 strzłu, to do każdeego wroga muszę dawać kolejne rozszerzenie Advancet Dir. ? |
_________________ tamtomasz.pl |
|
|
|
|
jarlfenrir
Generał brygady
Pomógł: 82 razy Posty: 1731
37283 Prestiż
|
Wysłany: 25-06-2008, 18:48
|
|
|
Tropik napisał/a: | A jeżeli chcę zrobić aby wrogowie posiadali również silnik 360 strzłu, to do każdeego wroga muszę dawać kolejne rozszerzenie Advancet Dir. ? |
A po kiego? AdvDir ma tylko obliczyć kąt między kulą i celem.
Podajesz wspólrzędne wroga, potem miejsca, gdzie strzela i masz już odpowiedni kąt. Potem musisz tylko sprawić, by kula wroga "działała" na tej samej zasadzie, co kula gracza. |
|
|
|
|
Tropik
Plutonowy
Posty: 79
4246 Prestiż
|
Wysłany: 01-07-2008, 15:24
|
|
|
Cytat: | Potem musisz tylko sprawić, by kula wroga działała na tej samej zasadzie, co kula gracza. |
to właśnie tutaj stoi problem. Próbowałem z wartościami a nawet flagami - nic! Działa tylko gdy stworzę 2 ADO i przekopiuję zdarzenia od playera do wroga zmieniająć w warunkach obiekty...
Chciałbym to wszystko na jednym Adv.Obj zrobić. |
_________________ tamtomasz.pl |
|
|
|
|
|