• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak to działa - czyli wykrywanie powierzchni

VPS Starter Arubacloud
0 głosów
249 wizyt
pytanie zadane 30 czerwca 2016 w Rozwój zawodowy, nauka, praca przez niezalogowany

Witam, mam pytanie odnośnie tego jak np w grach takich jak ta(co prawda tutaj nie jest do końca w 2d ale chodzi mi tylko o przykład, mam na myśli np gry pokroju mario itp):

https://www.youtube.com/watch?v=NWnhq8MgoeQ

wykrywana jest powierzchnia? Skąd taki mario "wie", że jest na powierzchni i nie spada? Przecież na całej planszy są różne wysokości raz jest wyżej raz niżej, jak to jest zrobione, bo chyba nie ma okodowanego każdego najmniejszego fragmentu mapy, prawda?

3 odpowiedzi

0 głosów
odpowiedź 30 czerwca 2016 przez iWantCode Bywalec (2,170 p.)
Ziemia, obiekt jeśli Mario nie tyka ziemi Mario.y =- 1
komentarz 30 czerwca 2016 przez niezalogowany
chmm tyle się domyślam ale jak to zrobić na całej długości? Jak zdefiniować "tykanie ziemi"
0 głosów
odpowiedź 30 czerwca 2016 przez ShiroUmizake Nałogowiec (46,300 p.)
Zainteresuj się wzorcem projektowym : STAN;

Dużym skrócie, że mamy obiekt Earth z klasy EarthState do którego jest zaimplikowany interfejs IEnviromentStates i powiedzmy przyjmuje dwie wartości true or false. Pod względem zmienionego stanu, obiekty zależne zmieniają właściwości: np;mario. Załóżmy, że mamy obserwatora, który bacznie obserwuje nas obiekt, pod wzlędem właściwości środowiska, zezwala na takie zdarzenia, na który otrzymany stan pozwala:

  if (enviromentStateList(powiedzmy, że to jest nasza lista obiektów stanów).getEarthState()){

getPos (enviroment.getPOSY()) <- załóżmy, że środowisko to jest obiekt, który przyjmuje konstruktorze kolejne obiekty np: POS który jest final)

MarioCanJump();

else

return false;

public boolean MarioCanJump (){

return true;
}

// Powiedzmy, że kolejna grupy klas odpowiadająca za akcje, podmieni stan na false (nie dotyka),przez co obserwator zwróci false i nie umożliwi mu skoku (bo jak powietrzu można skakać).
0 głosów
odpowiedź 30 czerwca 2016 przez Grzyboo Nałogowiec (28,860 p.)
edycja 30 czerwca 2016 przez Grzyboo

Obiekt prostokątny spada w dół. Co jakiś zdefiniowany czas przesuwamy go o pionową prędkość do dołu.

if(object.y + object.size.y > floor.y)
    // kolizja

object.y - pozycja pionowa gracza

object.size.y - wysokość gracza

floor.y - pozycja pionowa podłogi

 

Zazwyczaj kierunek Y zwiększa się w dół, a na samym górze okna jest równy 0 (przeciwnie niż w matematyce)

 

No i tak z grubsza wykrywasz prostą kolizję. Dla bardziej zaawansowanych (nie prostokątnych) trzeba użyć np. "Separating Axis Theorem", ale to trochę więcej zabawy.

Podobne pytania

+1 głos
1 odpowiedź 139 wizyt
pytanie zadane 11 maja 2016 w Offtop przez programmero Bywalec (2,420 p.)
0 głosów
0 odpowiedzi 536 wizyt
pytanie zadane 28 grudnia 2022 w C i C++ przez MichaelM Bywalec (2,440 p.)
0 głosów
2 odpowiedzi 152 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...