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ń: 5850 | 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
138 użytkownik(ów) aktywny(ch) przez ostatnie 15 minut:
gości: 136, userów: 2, ukrytych: 0
Threef, eripicue

0 użytkownik(ów) na gmczacie i 0 bot(ów)
Shoutbox
exp (16:21, 23.07.17):
a klocki w game makerze traktujecie jako programowanie?
Fervi  (11:29, 23.07.17):
Jasne, że najlepiej jest nauczyć się ich języka itd. Natomiast coś na kształt uproszczonego Dooma (powiedzmy - w skrócie) można zrobić (teoretycznie) bez żadnej linijki kodu dodatkowej. Bardziej to nie tyle Game Maker typowy co edytor map z językiem programowania
Danielus (10:37, 23.07.17):
Prawda ale chodzi raczej o coś innego. Chodzi o prostotę, im coś prościej zrobić tym łatwiej estymować pracę i tym łatwiej to potem utrzymać. Dlatego firmy ciągnie do języków takie jak C# czy Java. Pamiętaj że to tylko narzędzia i zawsze trzeba wybierać odpowiednie narzędzia jeśli możesz zrobić coś w rok w c# to wybierasz c# niż 5 lat w C nawet kosztem 50% spadku wydajności. Chyba że wydajność jest punktem krytycznym projektu.
Wojo (10:22, 23.07.17):
Aż mnie krew zalewa ale to jest nowe pokolenie programistów - idiotów
Wojo (10:22, 23.07.17):
Czytałem blog jakiegoś barana, który pisał, że C# pomimo, że jest mało wydajny to i tak warto się go uczyć bo teraz RAM bez problemu można dokupić
Wojo (10:21, 23.07.17):
No mniej więcej o to mi chodziło. O uproszczenie, co wiąże się z tym, że ludzie nawet nie myślą o optymalizacji
Danielus (10:19, 23.07.17):
W sensie mam na myśli że na początku taki człowiek dostaje gotowce i jest zadowolny a potem mówi "a mam pomysł żeby tu była taka mechanika" i nagle ludzie się uśmiechają "a to sobie napisz bo na to nie ma gotowca" no i projekt upadł.
Danielus (10:17, 23.07.17):
Zawsze wolałem 2d, jakoś przyjemniej się gra i trochę mi szkoda że nie ma już tak potężnych produkcji 2d jak np homm3 ale cuż :f Programować nadal musisz umieć, zmienia się zakres tego co trzeba umieć bo języki się uproszczają i powstają języki vizualne ale ja to wciąż będę nazywał porgoramowaniem bo wymaga takiego samego myślenia jak zwykłe programowanie. Natomiast ludzi przychodzą robić gry myśląc że to ot tak zrobią i potem płacz że miało być bez programowania
Wojo (10:14, 23.07.17):
No bo 3D to skok technologiczny i daje większe możliwości, a miłośników 2D jest znacznie mniej
Ignatus (10:12, 23.07.17):
Nie wiem co ludzie widzą w tym żę coś jest 3D, jak jest słaby pomysł i mechanika to jeden pies jaki masz widok.Wszyscy amatorzy zakładają że 3D od razu daje grze 3punkty do oceny
Wojo (10:06, 23.07.17):
Na tym forum żaden z działów poza GM się nie sprawdza. Hmmm ciekawe dlaczego
Wojo (10:05, 23.07.17):
A jeśli chodzi o tego sandbox game maker to równie dobrze można dodać dział "GAME MAKER 3D" bo program i tak reprezentuje trochę niższy poziom
Wojo (10:01, 23.07.17):
Ale w dzisiejszych czasach serio się nie musisz znać na programowaniu ( a przynajmniej tak bardzo jak kiedyś ).
Danielus (9:49, 23.07.17):
:Nie trzeba znać się na programowaniu" najbardziej idiotyczna fraza jaka pojawiła się w naszym środowisku. Jak nie trzeba programować to znacyz że nie zrobisz nic innego jak klony istniejących rzeczy.
Fervi  (1:39, 23.07.17):
Może admin niech się zastanowi nad dodaniem subforum "Sandbox Game Maker". To taki Game Maker, który napierdziela gry w 3D i nie trzeba znać się na programowaniu (chyba, że coś lepszego chcemy) - jak w GMie xd
MaxGaming (19:00, 22.07.17):
Na AM i nie automatycznie bo trzeba do jakiegoś urzędu zamienić ale nie wiem dokładnie
Wojo (18:13, 22.07.17):
A to nie jest tak, że karta motorowerowa automatycznie zamienia się w a1 ?
MaxGaming (17:41, 22.07.17):
Ja mam A1, a właściwie jeszcze nie mam bo muszę praktykę zdać. Zaczałem jakoś dwa lata temu i nigdy nie skończyłem to doszedłem do wniosku że kiedyś trzeba(chociaż gdybym teraz zaczął mógłbym a2 nie a1) xD
Wojo (15:25, 22.07.17):
A tak na poważnie chciałem sobie kupić 125ke ale niedawno zauważyłem, że trzeba mieć B 3 lata a nie 2 tak jak myślałem :/
Wojo (15:21, 22.07.17):
hehe lewa w górę
MaxGaming (15:14, 22.07.17):
Motor masz pod maska w samochodzie
MaxGaming (15:14, 22.07.17):
Motocykl*
Wojo (11:35, 22.07.17):
Motor
ANtY (10:59, 22.07.17):
co to cbrka
MaxGaming (2:38, 22.07.17):
Po prostu nigdy nie sprawdzajcie vmaxa gdy jest po deszczu a za 200 metrów jest zakręt 90 stopni xd
MaxGaming (2:37, 22.07.17):
Za 5000zł bym nie zaszalał jeżeli chodzi o muscle cara xd
Chell (2:36, 22.07.17):
wniosek trzeba bylo kupic muscle cara
MaxGaming (2:35, 22.07.17):
Wniosek? Nie opłaca się wychodzić z domu XD
MaxGaming (2:35, 22.07.17):
Kupiłem CBRkę i pierwszego dnia ją rozbiłem <facepalm> Koszt naprawy jakieś 2000zł(a kupiłem za 5000zł) XDDDD
I am vader (23:26, 21.07.17):
Kodze projegd
Wojo (21:42, 21.07.17):
a siedze se w domu jak zawsze i podróżnikowałem sobie po mieście wcześniej i generalnie jestem nawet zadowolony
Ignatus (20:53, 21.07.17):
Słyszałem że taka gorzka czekolada
Threef (20:47, 21.07.17):
A nie piłem. Jak ta jelitówka smakuje? Lepsza od wiśniówki?
Chell (19:52, 21.07.17):
siedze w chacie z jelitowka, elo
Nikas (19:47, 21.07.17):
alkololo
ANtY (18:41, 21.07.17):
PRZYZNAWAĆ SIĘ, NIC NIE UKRYWAĆ
ANtY (18:41, 21.07.17):
NO ELO CO TAM
Wojo (5:23, 20.07.17):
O dzięki, doceniam starania
Danieo (0:13, 20.07.17):
Wszystkiego najlepszego!
Gibki Kaktus (21:02, 19.07.17):
Btw zalogowałem się specjalnie, żeby Ci życzenia złożyć xD
Gibki Kaktus (21:01, 19.07.17):
Najlepszego To Ty tylko o rok starszy ode mnie, ale 2 z przodu, czas umierać :/
Wojo (20:54, 19.07.17):
Nikt w historii gmclanu nie miał tak chyba hucznie obchodzonych urodzin Dzięki wszystkim, którzy przybyli
exp (20:41, 19.07.17):
stoo laat stoo laat niech żyyjee żyyjee naam
Wojo (19:00, 19.07.17):
Hoho dzięki że pamiętacie
Nikas (17:57, 19.07.17):
sto lat sto lat
I am vader (16:30, 19.07.17):
najlepsz
Wojo (8:07, 19.07.17):
Dzięki za pamięć
PatrykPlayingPOLSKA (8:03, 19.07.17):
Najlepszego Woju
Wojo (6:26, 19.07.17):
Się człowiek starzeje
Wojo (6:26, 19.07.17):
O nie to już 20 wiosen.
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.01934 sekund ] [ Liczba zapytań MySQL: 17 ]

thecrims Otserv List Otserv LyricsTown Harry Potter Serwery Gier
dev nodev