![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 9.03.2016 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam dość niewygodny problem. Nie jestem aż tak dobry z matematyki żeby z tym sobie poradzić. Chodzi o to, że mam stworzoną mapę do gry. Gracz może się po niej przemieszczać. Gdy zaczyna się przemieszczać do bazy zapisują się wszystkie informacje o podróży wraz z czasem. Jeśli wejdzie na stronę ponownie - podróż jest nadal kontynuowana. Działa to na takiej zasadzie że czas który pozostał do ukończenia podróży zamieniany jest na milisekundy i daje wtedy pozostały czas animacji. Wtedy za pomocą $.animate() przesuwam gracza do pozycji końcowych X i Y. Problem w tym, że nie mogę rozgryźć równania, które względem koordynacji Ax, Ay, Bx, By, oraz długości ścieżki wyliczy gdzie teraz znajduje się gracz. Mam już takie obliczenia: Całkowity czas podróży, czas który pozostał, czas który gracz już przebył, odcinek który gracz już przebył (w px), nawet procent który przebył. Ale nie mogę nadal wyliczyć tych końcowych koordynatów X i Y. Proszę o pomoc, bo męczę się z tym już długi czas. Oto kod:
Niestety funkcja nie działa, numery wychodzą ujemne albo ekstremalnie duże. Proszę o pomoc. Pozdrawiam, Hazes. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Ścieżka jest linią prostą?
X,Y to mają być koordynaty w danej chwili czy końca ścieżki (piszesz o końcowych)? Czy dobrze rozumiem, że początek to punkt (Ax,Ay), koniec (Bx,By), a chcesz na podstawie np. procentowej wartości przebycia ścieżki, znaleźć punkt (X,Y) na tej ścieżce, tak? -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 9.03.2016 Ostrzeżenie: (0%) ![]() ![]() |
Ścieżka jest linią prostą? X,Y to mają być koordynaty w danej chwili czy końca ścieżki (piszesz o końcowych)? Czy dobrze rozumiem, że początek to punkt (Ax,Ay), koniec (Bx,By), a chcesz na podstawie np. procentowej wartości przebycia ścieżki, znaleźć punkt (X,Y) na tej ścieżce, tak? Tak, ścieżka jest linią prostą. X, Y to mają być koordynaty w danej chwili. Czyli mam punkt a i punkt b, wiem ile pixeli od punktu a powinien być położony punkt w którym aktualnie jestem ale nie wiem jak wyliczyć koordynaty. Tak, początek to (Ax,Ay), koniec to (Bx,By) i tak, na podstawie procentowej wartości przebycia ścieżki chcę wyliczyć jak daleko przeszedł już gracz. W sumie nie trzeba męczyć procentów (chyba że tak będzie łatwiej) bo wyliczyłem już całą odległość którą przeszedłem od punktu A - (pathTraveled). //EDIT: Grid wygląda tak. Jeśli jest to potrzebne. Liczby zwiększają się od lewego górnego rogu. ![]() Ten post edytował Hazes 1.09.2016, 17:38:04 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
To co mi pierwsze przychodzi do głowy (według standardowego układu współrzędnych):
1. Współczynnik nachylenia prostej=tan(dx/dy) 2. Kąt nachylenia prostej=atan(dx/dy) 3. Odległość od punktu Ax,Ay: X=Ax+d*cos(kąt) Y=Ay+d*sin(kąt) Czyli: X=Ax+d*cos(atan(dx/dy)) Y=Ay+d*sin(atan(dx/dy)) d=dystans dx=delta X dy=delta Y -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 9.03.2016 Ostrzeżenie: (0%) ![]() ![]() |
To co mi pierwsze przychodzi do głowy (według standardowego układu współrzędnych): 1. Współczynnik nachylenia prostej=tan(dx/dy) 2. Kąt nachylenia prostej=atan(dx/dy) 3. Odległość od punktu Ax,Ay: X=Ax+d*cos(kąt) Y=Ay+d*sin(kąt) Czyli: X=Ax+d*cos(atan(dx/dy)) Y=Ay+d*sin(atan(dx/dy)) d=dystans dx=delta X dy=delta Y Rozumiem co masz na myśli, ale nie mam pojęcia jak to zapisać. Jeśli wyliczam X lub Y muszę skorzystać z dx i dy. W takim razie czy dx to niewiadoma ? Ten post edytował Hazes 1.09.2016, 18:55:28 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
dx=Bx-Ax
dy=By-Ay -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 9.03.2016 Ostrzeżenie: (0%) ![]() ![]() |
dx=Bx-Ax dy=By-Ay Okej, zrobiłem. Z tym że im dłużej moja postać idzie w daną stronę tym bardziej obiekt jest odsunięty. Jeśli idę w prawo, postać pojawia się za wysoko z czasem. Jeśli idę do góry obiekt przesuwa się za bardzo w prawo. Jeśli idę w prawo to przesuwa mnie znów w lewo. Generalnie na początku jest dobrze, cały czas jest na linii. Wygląda to u mnie tak:
Ten post edytował Hazes 1.09.2016, 19:54:10 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Podałem wzór dla standardowego układu współrzędnych, Ty masz obrócony.
Prawdopodobnie trzeba jeszcze badać kąt nachylenia prostej (w jest której kwarcie). -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 11 Pomógł: 0 Dołączył: 9.03.2016 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.07.2025 - 05:51 |