Fastbar
Powrót do strony głównej
Trzymaj pliki na gmclan.org!
Game Maker w pytaniach i odpowiedziach!
Polska dokumentacja
Tabela wyników ligi 24
Pobierz GM
Kategorie bazy plików
Pliki -> Game Maker -> Przykłady
Informacje o pliku: Przyszła pozycja gracza
Przykład pokazuje jak obliczyć przyszłą pozycję gracza na podstawie jego kierunku i prędkości. Przydatne jest to w grach typu Tower Defence, strategiach, TDS'ach.
rozmiar: 13 KB | autor: Uzjel
pobrań: 5753 | głosów: 12 | ocena: 7.33 oceń zasób
data dodania: 23.09.10 | dodał: Tymon
Komentarze
stron: 1

1


av

Makary155 (17:06, 24.09.2010)

Świetne! Wreszcie moi łucznicy będą trafiać w ruchomy cel

av

Dawidds (18:21, 24.09.2010)

Idea przykładu fajna, ale jednak zastosowany mechanizm sprawia że przy stałym ruchu gracza kościotrup nie zawsze trafia (chociaż i tak w większości trafia, a w tdsach nie ma co się z tym bawić bo i tak gracz będzie robił uniki) w cel. Nie mam pomysłu jak to wyjaśnić to daję obrazek:
img832.imagesha...64/fgfdgdfg.png

I teraz po kolei kroki, które wykona algorytm w tym przykładzie (czarne to kościotrup, niebieskie jabłko):
1. Sprawdzamy, w ilu klatkach strzała doleci do AKTUALNEJ pozycji gracza. Wynik - 4 klatki (taki przykład ofc). Czerwona linia na obrazku.
2. Obliczamy, na jakiej pozycji będzie gracz za tyle klatek, ile wyszło na wyżej. Niebieska linia na obrazku, ta pozycja gracza, która nam wyszła jest oznaczona jako puste niebieskie kółko.
3. Strzelamy w to puste niebieskie kółko. Zielona linia na obrazku.
//tutaj koniec algorytmu, ale obserwujmy dalszy przebieg zdarzeń
4. Niestety, wyszło tak, że strzale dojście do pozycji którą wyliczyliśmy zajęło 6 klatek (sprawdzaliśmy to w 1 punkcie, wtedy innymi danymi nie dysponowaliśmy), a nie 4. I przez te 6 klatek gracz zdążył ominąć trajektorię - różowe kółko.

Obliczanie pozycji, na której będzie gracz w momencie gdy trafi go strzała nie opiera się na dystansie do rzeczywiście tego punktu, gdzie trafi go strzała (choć szczerze sam nie mam pojęcia jakby to obliczyć, mógłby się wypowiedzieć jakiś ekspert : D), a na dystansie do gracza. A nas interesuje PRZYSZŁA pozycja gracza i to na niej powinniśmy oprzeć obliczenia - a nie na aktualnej.
Opieramy się na czerwonej kresce, a powinniśmy na zielonej.

Inna sprawa, że wychodzi na to, że aby obliczyć przyszłą pozycję gracza potrzebujemy pozycji gracza. Dlatego to takie ciekawe : D

av

Tymon (18:25, 24.09.2010)

Ale Ty uwzględniasz ruch przyspieszony którego nie ma w tym przykładzie.

av

Dawidds (18:25, 24.09.2010)

Nie chce mi się myśleć dokładnie jaki by to miało sens, ale logiczne wydawało by się zrobienie po prostu powiedzmy 5 iteracji - z których każda opierała by się na wyniku poprzedniej.
Czyli że rysunek który wyżej dałem to 1 iteracja - w drugiej program liczy, gdzie będzie gracz za 6 klatek (długość zielonej kreski, tą, którą właśnie obliczyliśmy). I wtedy przekazujemy do następnej iteracji, aby obliczyła, gdzie będzie gracz za (tutaj wynik tej 2 iteracji) klatek.

Całkowicie precyzyjne by to nie było, ale było by to już dużo większe przybliżenie.

av

Tymon (18:27, 24.09.2010)

Stary, komplikujesz sobie życie. Do podręcznika fizyki, marsz.

av

Dawidds (18:37, 24.09.2010)

Nie, nie uwzględniam przyspieszonego : D

Obliczamy, gdzie będzie gracz, gdy trafi go strzała - ale opieramy to na AKTUALNEJ sytuacji (aktualnym dystansie kościotrup-gracz, co przekłada się na wynik "w ilu klatkach strzała dotrze do celu", a nie na tej przyszłej. Nie mam pojęcia jak to lepiej wyjaśnić, także muszę liczyć, że kogoś oświeci i zrozumie, o co mi chodzi

Tyle tylko że mówię, do gier to w 100% wystarcza - ale tak czysto teoretycznie patrząc to ten przykład nie jest całkiem skuteczny

Zresztą najlepiej zwiększyć sobie ekran i się zauważy, że rzeczywiście gdy poruszamy się tak, że szybko zmienia się dystans jabłko-kościotrup (mijamy go w odległości gdzieś 150px) to szkielet w nas po prostu nie trafia (mimo, że nie zmieniamy kierunku ani prędkości).

av

Dawidds (18:38, 24.09.2010)

Chyba inne podręczniki od fizyki mamy

av

Tymon (18:46, 24.09.2010)

Dobra, już to widzę.

W alarmie szkielecika trzeba poprawić liczenie dist.

dist = point_distance(
x,
y,
obj_apple.x + lengthdir_x( obj_apple.apple_speed, obj_apple.apple_direction ),
obj_apple.y + lengthdir_y( obj_apple.apple_speed, obj_apple.apple_direction )
);

Zwykły błąd, bo w końcu ma strzelać w kierunku przyszłej pozycji jabłka, a nie obecnej.

Dawidds i tak masz pałę za sposób rozwiązania problemu.

av

Uzjel (20:01, 24.09.2010)

Napiszmy o tym pracę magisterską i chodźmy na piwo. Dla mnie tamto rozwiązanie jest wystarczające, bo snajper nie jest potrzebny

av

pablo1517 (16:45, 29.11.2010)

Dawidds, to nie wystarczy brać sobie odległości kosciotrup - przyszła pozycja gracza, zamiast kosciotrup - gracz? Wtedy masz wszystko policzone bezbłędnie, tak na chłopski rozum, bo z fizyki to ja same 2 mam :/

av

Dawidds (17:47, 29.11.2010)

Się obudziłeś : D
No ale jak już mamy się czepiać to na chłopski rozum wychodząc od tego co napisałeś:

1. Chcemy obliczyć [odległość kościotrup - przyszła pozycja gracza], potrzebujemy do tego ofc:
-pozycja kościotrupa (mamy)
-przyszła pozycja gracza (nie mamy, liczymy)
2. Do obliczenia [przyszła pozycja gracza] potrzebujemy:
-kierunku gracza (mamy)
-jego prędkości (mamy)
-czasu, jaki zajmie pociskowi dotarcie do tej [przyszłej pozycji gracza] - (nie mamy, liczymy)
3. Do obliczenia [czasu jaki zajmie pociskowi dotarcie do tej [przyszłej pozycji]] potrzebujemy:
-prędkości pocisku (mamy)
-dystansu jaki musi przebyć pocisk, czyli właśnie [odległość kościotrup - przyszła pozycja gracza] - no jak nieciężko zauważyć, zapętliliśmy się.

Myślę że trochę lepszy sposób na pokazanie tego niż to co pisałem ostatnio, ale i tak gadanie nad tym jest czystą głupotą bo w 95% przypadków pocisk mimo drobnej nie-precyzji (tak, wiem, słowotwórstwo - you're doing it wrong) trafi gracza, a w pozostałych 5% gracz zrobi unik i tyle ze snajperskich zdolności szkieletu, więc naprawdę nie ma o czym gadać. Czysto matematycznie technika jest nieprecyzyjna, ale w kontekście gier i tak w 100% wystarczająca.

I end of topic, bo nie dam rady tego lepiej wytłumaczyć a na pisanie aplikacji która to zademonstruje jestem zbyt leniwy.

stron: 1

1



Dodaj komentarz:
Treść:
W bazie mamy plików: 215
Menu
Panel użytkownika
Jesteś niezalogowany!

Nie masz konta? Zarejestruj się
Użytkownicy on-line
85 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 82, userów: 3, ukrytych: 0
PatrykPlayingPOLSKA, ♔ Adriann ♔ , ♔ Wojo ♔

0 użytkownik(ów) na gmczacie i 0 bot(ów)
Shoutbox
Chell (20:18, 26.05.17):
głos zapisany, powodzenia
I am Lord (19:13, 26.05.17):
I matka też, chyba bardziej haha
I am Lord (19:13, 26.05.17):
Dzięki, dzieciuch się ucieszy
PatrykPlayingPOLSKA (19:09, 26.05.17):
głos oddany
I am Lord (18:55, 26.05.17):
Nikas (18:21, 26.05.17):
Zrobione. Play doh i plac zabaw. Będą mieli cała piaskownicę z tego super wyglądającego piasku którym niestety nigdy nie miałem okazji się pobawić????? xD
I am Lord (18:08, 26.05.17):
Pomożecie mojemu siostrzeńcowi oddać głos na pracę z "Piły" "Grupa: DZIELNE ZUCHY" wymarzony-plac-...da59e3c0de745e5
nowy_user (16:24, 26.05.17):
Ogolił głowę na 0mm ?
Wojo (16:22, 26.05.17):
I chyba nie muszę wspominać że pozbył się łysienia raz na zawsze
Wojo (16:21, 26.05.17):
Ten bezrobotny dwudziestoparolatek zarabia krocie w internecie i umawia się ze wszystkimi samotnymi mamuśkami w okolicy i powiększa swojego penisa dzięki jednej prostej kryptowalucie. ZOBACZ JAK
Sutikku (16:08, 26.05.17):
biznesmeni go nienawidzą
Nikas (15:31, 26.05.17):
Znalazł jeden prosty sposób jak zarabiać w internecie!!!!!
Sutikku (14:52, 26.05.17):
korzysta tu ktoś z przeglądarki vivaldi?
Fervi  (23:55, 25.05.17):
Społeczność jest dużo mniejsza
Fervi  (23:55, 25.05.17):
Powiedzmy, że potencjalnie reddit. Natomiast masz podział na tagi, więc możesz obserować te, które cię interesują
I am Lord (23:27, 25.05.17):
więc żaden reddit z tego
I am Lord (23:27, 25.05.17):
Te wpisy tam to w 95% jakieś pieprzenie o bitcoinach, spsobach na magiczne bogactwo nie ma nic normalnego :/
Fervi  (23:17, 25.05.17):
Oczywiście te 500zł to taka wartość hmm ... lekka. Są osoby, co zarobiły 16k na jednym poście, albo 1.5k w 2 tygodnie. Natomiast założyłem, że po prostu relanie z 500, może 1000zł / msc będzie
Fervi  (19:37, 25.05.17):
Możesz też wymieniać kryptowalutę z jednej na inną (poloniex)
I am Lord (19:28, 25.05.17):
w jaki sposób kryptowalutę się da wymieniać bo ja nie ogarniam
Fervi  (17:32, 25.05.17):
Każda chyba kryptowaluta jest wymianialna na złotówki. Nawet Dogecoin
Fervi  (17:32, 25.05.17):
Doge się nie wybił, a inne i owszem
Wojo (17:29, 25.05.17):
Tak jak np dogecoin
Wojo (17:28, 25.05.17):
Pomijając te moje śmieszne filozofie to rynek kryptowalut jest juz tak rozwinięty że kolejne kryptowaluty się nie wybijaja bo nie maja nic więcej do zaoferowania
Wojo (17:25, 25.05.17):
I to jest chujowa robota i to. Ale w jednej z nich jesteś w stanie odebrać wynagrodzenie
Wojo (17:22, 25.05.17):
A za pomoc przy osobach starszych dostajesz 2000euro (w realnej walucie). Serio smuci mnie to jak niektórzy kombinują jak koń pod górę zamiast najzwyczajniej w świecie zabrać się do roboty
Fervi  (17:18, 25.05.17):
Oczywiście mechanizm jest bardziej skomplikowany, ale to przykład
Fervi  (17:17, 25.05.17):
Dogecoin to po prostu kolejna waluta. I dobrze. Ale to tak jakbyś na stack overflow za pomoc użytkownikowi zamiast + dostał 10 centów (w kryptowalucie)
Fervi  (17:14, 25.05.17):
Akurat nie moja Od Dogecoin stoi o wiele wyżej. Natomiast może sukces osiągnąć z prostego powodu. To w zasadzie portal z walutą.
Wojo (17:12, 25.05.17):
Ale ta twoja waluta jest czymś pokroju dogecoina czyli czymś co sukcesu nie osiągnie
Fervi  (17:11, 25.05.17):
Masz już 4 kryptowaluty, co się wybiły całkiem nieźle (powyżej chyba 100 dolarów), może ciut więcej. Co prawda Steem nie należy do nich, natomiast na razie idzie go zdobyć dużo
Wojo (17:10, 25.05.17):
Dodatkowo bitcoin jest czymś co wcześniej było niespotykane a to jest jedno ze źródeł jego sukcesu
Wojo (17:09, 25.05.17):
Ale bitcoin to przypadek jeden na milion. Szansa że takj projekt wypali jest niewielka
Fervi  (17:08, 25.05.17):
Dlatego ci co weszli w bitcoina są bogaci, a ci co nie rozumieją krzyczą "hurr durr, waluta komputerowa do płacenia za pedofilię"
Fervi  (17:07, 25.05.17):
Wiem, wszystko co nieznane to demoniczne
Wojo (17:06, 25.05.17):
Ktoś tu chyba powoli zaczyna dzielić losy pakło
Fervi  (17:05, 25.05.17):
Potrzebujemy osób co coś potrafią Wojo
Fervi  (17:04, 25.05.17):
No i bardzo dobrze
Wojo (17:04, 25.05.17):
Szkoda czasu na coś takiego
Wojo (17:03, 25.05.17):
W kryptowaluty sie inwestuje jak mają potencjał a nie leci się pod każdą stworzoną.
Fervi  (17:00, 25.05.17):
Oczywiście im więcej Polaków tym lepiej, na początku nic nie znaczą, to po prostu budują społeczność, a potem ich głos zaczyna znaczyć 1 cent, 2 centy itd. i jest nabijanie kabzy
Fervi  (16:56, 25.05.17):
Oczywiście w kryptowalutach, więc jak ogarniasz co nieco to możesz się wybić na tym (jak na BTC) - przynajmniej potencjalnie
Fervi  (16:56, 25.05.17):
Są ludzie co siedzą na reddit i nic nie mają. A tutaj robią to samo i jeszcze im płacą
Fervi  (16:56, 25.05.17):
Czasem 3, czasem 80. Robisz to co robisz teraz a dodatkowo zarabiasz. Wyobraź sobie, że teraz gadamy sobie na GMC, tylko zamiast pustego rzucania sloganów - dostajesz hajs
ediepl (16:55, 25.05.17):
Jeśli uważasz że godzina twojej pracy kosztuje 3zl to spoko
Fervi  (16:52, 25.05.17):
No proszę, a mówią, że pieniądz nie śmierdzi
ediepl (16:51, 25.05.17):
Spoko praca jak się nie szanujesz
Fervi  (16:39, 25.05.17):
Komentujesz, piszesz posty, blabla
Fervi  (16:39, 25.05.17):
I Jasne, że z ulotek zarobisz więcej, tylko tutaj nie wychodzisz z domu. Po prostu robisz to samo co na wielu portalach
Ankieta
» Jakiej wersji GameMakera głównie Używasz?
GameMaker: Studio 2
GameMaker: Studio
GameMaker 8.1 i starsze
Żadnej

GMCLAN to serwis o programie Game Maker i nie tylko.
Copyright © 2002-2017. GMCLAN.ORG
Wszelkie prawa zastrzeżone. Kopiowanie materiałów bez zgody redakcji zabronione!

[ Czas generowania strony: 0.01488 sekund ] [ Liczba zapytań MySQL: 17 ]

thecrims Otserv List Otserv LyricsTown Harry Potter Serwery Gier
dev nodev