2010-02-23 21 views
5

Wyciągnąłem płytki w mojej grze XNA i załadowałem moją postać. Moja postać jednak nie porusza się - mapa robi, co daje złudzenie ruchu. Teraz zastanawiam się, jak właściwie przetestować je przed kolizją. Chodzi mi o to, dokąd zmierza kod kolizyjny i jak sprawić, by wszystkie płytki stanowiły "jedną wielką rzecz"?Kolizja na bazie kafelków w XNA

+0

Czy mógłbyś trochę wyjaśnić sytuację? to znaczy. W jaki sposób korzystasz z mapy kafelków w grze? Czy postać zajmuje jedną płytkę lub kilka płytek (a la Tetris)? Czy przeszkody w grze zajmują wiele płytek? Jestem trochę zagubiony, ponieważ uważam, że wykrywanie kolizji byłoby prostą sprawą porównywania pozycji postaci z przeszkodami na mapie kafelków, a nie wykrywanie kolizji opartej na pikselach ... – Syndog

Odpowiedz

5

Istnieje tutorial na temat pixel based collision detection w klubie XNA Creator. Musisz dowiedzieć się, na jakich obiektach chcesz wykryć kolizję. Chyba chcesz, aby postać poruszała się po wyłożonym kafelkami tle, więc nie chcesz sprawdzać kolizji między Twoją postacią a tłem. Zamiast tego powinieneś zrobić sprite'y z przeszkodami i na nich wykryć kolizje.

+0

To wiem, ale ja nie wiem, jak przetestować kolizję na te przeszkody, ponieważ są to płytki ułożone przez pętlę for. – DMan

+0

Nie jestem pewien, czy podążam. Nie ma znaczenia, jak narysujesz swoje tekstury. Musisz zidentyfikować tekstury, dla których chcesz wykonać wykrywanie kolizji i zastosować wykrywanie zgodnie z opisem w załączonym pliku .htm w przykładzie. –

+0

Cóż, ponieważ rysuję każdą teksturę wiele razy, czy nie muszę stosować kolizji więcej niż raz? Jeśli tak, to gdzie mam to zrobić - podczas mojego kodu rysunkowego> – DMan

0

Możesz rzucić okiem na Platformer Starter Kit, pokazuje jak uporządkować kafelki na mapie i sprawdzić kolizje.

+0

Zajrzałem tam, ale nie mogłem znaleźć tego pliku klasy, że zderzenie rzeczywiście miało miejsce ... – DMan

0

Prostokąty mają metodę przecięcia. Jeśli twój odtwarzacz jest wyśrodkowany i znasz współrzędne, przejrzyj inne texture2ds i sprawdź przecięcie przed przewinięciem mapy.