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ń: 5814 | 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
34 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 33, userów: 1, ukrytych: 0
I am vader

0 użytkownik(ów) na gmczacie i 0 bot(ów)
Shoutbox
nowy_user (16:09, 28.06.17):
Jeśli dobrze kojarze, to Gmclan się nazywał wtedy GMxxl czy jakos tak.
nowy_user (16:06, 28.06.17):
Skoro jesteśmy w temacie wspomnień, ma ktoś możę screenshota pierwszej wersji GmClanu? Mam namyśli ogólnie pierwszą , jeszcze tą sprzed czasów nawet drewnianego Gmclanu. Jestem ciekawy jak gmclan wtedy wyglądał.
exp (15:49, 28.06.17):
i już wiesz, jak to zrobić?
Nikas (15:43, 28.06.17):
prosze was o pomoc!!bo nie wiem jak zrobic zeby postac byla animowana jak chodzi w kazda strone.np jak wcisne w lewo to zeby postac szla na boku ruszala nogami i rekoma.to po pierwsze i jak robic np ze strzelam w kogos itp prosze o pomoc to dla mnie wazne tymbardziej ze dopiero zaczynam przygode z game makerem i nie mam go zarejestrowanego!!! dry.gif sad.gif sad.gif sp_ike.gif sp_ike.gif sad.gif sad.gif sad.gif unsure.gif unsure.gif // To mój pierwszy post na forum. ::)))
Wojo (14:38, 28.06.17):
Właśnie tak
PatrykPlayingPOLSKA (13:15, 28.06.17):
Czyli to było 3 lata temu ?
Wojo (12:12, 28.06.17):
Ja pamiętam jak mialem 5 lat i się tutaj rejestrowalem
exp (11:39, 28.06.17):
jak miałem 9 lat, to śmieszył mnie artykuł na gmclanie "zastosowania stringów"
ANtY (11:11, 28.06.17):
string to też zmienna
nowy_user (11:00, 28.06.17):
hej, krótka piłka, localne zmienne deklarujemy jako var , a jak deklarujemy lokalne stringi ?
gnysek (10:30, 28.06.17):
Ale w cachu archive.org często zostaje jak długo wisiało
Wojo (8:22, 28.06.17):
Btw. To powiedzenie jest bardzo nieprawdziwe
Wojo (8:22, 28.06.17):
W. Internecie nic nie ginie
Wojo (8:21, 28.06.17):
Nie da sie5
Chell (6:30, 28.06.17):
czym się kasuje shouty
Chell (22:56, 27.06.17):
sory za brzydkie slowa
Chell (22:55, 27.06.17):
kurwa jak tak patrzę na te garbary i pomyślę że jutro przed siódma tam będę jechał pisać to nie mogę
I am Lord (22:16, 27.06.17):
zablokowane to jest tylko dla nowych kont
I am Lord (22:16, 27.06.17):
po zalogowaniu doda ci twoją starą licencję free
I am Lord (22:16, 27.06.17):
Exp ściagniesz stąd www.yoyogames.c...tes-studio.html
Nikas (19:43, 27.06.17):
Na poczatku czytam, jakieś ideały, nie dla kasy, myślę wtf a tu nagle plot twist. xDDDD
I am vader (19:20, 27.06.17):
Nie przyznawaj sie bo nie wolno tego tu robic.
exp (17:18, 27.06.17):
to teraz muszę ściągać pirata programu, który kiedyś kupiłem
Wojo (10:33, 27.06.17):
Gnysek coś ty najlepszego narobil...
Chell (10:26, 27.06.17):
a zaczęło się sypać gdy pasjonat Overmars sprzedał gma diabłom korporatom
Chell (10:25, 27.06.17):
uśmiechnąłem się z ostatniego zdania
nowy_user (8:23, 27.06.17):
No właśnie... kiedyś mieli inne podejście, jak kupiłeś np GMa 5 (nota bene za ok 20 $ ), to dostawałeś w gratisie darmową aktualizacje do Gma 6 a potem do 7-ki. Widać było, że chłopaki nie robili tego dla kasy tylko dla idei. Wszystko zaczęło się sypać, gdy Gnysek odszedł z Yoyo, po prostu zabrakło kogoś, kto wyznaczałby standardy moralne.
Wojo (7:59, 27.06.17):
Ale pirat zadziała... I to pokazuje jak twórcy szanują pełnoprawnych użytkowników
Uzjel (1:11, 27.06.17):
Oficjalna wersja GM 8 nie powinna zadziałać (serwer licencji)
exp (0:37, 27.06.17):
a jeżeli nie, to stoi coś na przeszkodzie, żeby używać gm8? widze, że gierki działają na windows 10
exp (0:37, 27.06.17):
hmm. chyba kiedyś założyłem darmowe konto na studio, więc mogę ściągnąć gm z dobreprogramy i bzikać?
I am vader (0:13, 27.06.17):
Na 2.0 możesz co najwyżej uczyć kogoś programowania, ale gry nie zrobi bo nie ma robienia plików exe na darmolcu
I am vader (0:12, 27.06.17):
NIe ma w zasadzie juz darmowego GM'a. GMS 1.4 nie pozwala na zakladanie juz darmowych kont a 2.0 w ogole ma wszystko poblokowane w wersji free.
Uzjel (0:07, 27.06.17):
Chcesz za darmo co?
exp (23:27, 26.06.17):
jeżeli chcę za darmo
exp (23:20, 26.06.17):
ej której wersji GM się teraz używa?
Uzjel (22:03, 26.06.17):
xD
I am vader (20:51, 26.06.17):
Haha, o tym samym pomyslalem jak to zobaczylem
exp (17:04, 26.06.17):
mamo no ja nie oglądałem nic dla dorosłych, to samo tak wyskoczyło no
I am Lord (16:34, 26.06.17):
No mi się wyświetlały jakieś dildosy a to nie jest moje zainteresowanie Ktoś coś dziwnego przeglądał na moim kompie
Threef (16:30, 26.06.17):
Banery reklamowe są personalizowane. Wy widziesz to co wg reklamodawców Cię nteresuje (na podstawie twojej historii)
nowy_user (10:36, 26.06.17):
Hej, czy był ktoś z was na kursie programowania CodersLab(Ci od baneru)? Zastanawiam się nad tym, ale jestem ciekaw czy warto.
Chell (1:16, 26.06.17):
conieco
ANtY (1:03, 26.06.17):
elo co tam
I am Lord (19:53, 25.06.17):
Za dużo tam różnych optymalizacyjnych działań na bitach i flagach bitowych
I am Lord (19:50, 25.06.17):
Ogółem prawie nic nie rozumiem z tego kodu źródłowego, analiza gry AAA to nie mój poziom :p
I am Lord (19:49, 25.06.17):
Udało mi się skompilować i odpalić kod źródłowy ArxLibertatis (portu gry ArxFatalis) ile z tym roboty było ja pierdziele, nigdy więcej
I am vader (4:04, 25.06.17):
Nie ma to jak usuwanie botów o 4'tej
I am vader (20:22, 24.06.17):
Threef za biały jest na allahuackbar
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.01559 sekund ] [ Liczba zapytań MySQL: 17 ]

thecrims Otserv List Otserv LyricsTown Harry Potter Serwery Gier
dev nodev