Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Allegro]Problem z kolizja.

Ostatnio zmodyfikowano 2012-01-04 18:53
Autor Wiadomość
Winner
Temat założony przez niniejszego użytkownika
» 2012-01-02 22:14:33
Dzięki za przykład. Dzisiaj trochę posiedziałem nad tą kolizją i juz prawie działa, zn ludek gdy opada na kafelek i jest tak na pół na kafelku to opada dalej, nie zatrzymuje się, dopiera jak będzie cały ludek na kafleku to się zatrzyma opadanie... Mój kod kolizji:
C/C++
int RodzajTerenu = map[ my + y + 1 ][ mxx ];
int RodzajTerenuBok = map[ my + y ][ mxx + 1 ];
int RodzajTerenuNad = map[ my + y + 1 ][ mxx + 1 ];
int RodzajTerenuBok2 = map[ my + y + 1 ][ mxx ];
//w lewo
int RodzajTerenuDolLL = map[( int ) mapa_y + y ][( int ) mapa_x + x - 1 ];
int RodzajTerenuDolPP = map[( int ) mapa_y + y + 1 ][( int ) mapa_x + x - 1 ];
int RodzajTerenuGorPP = map[( int ) mapa_y + y + 1 ][( int ) mapa_x + x ];
int RodzajTerenuGor = map[( int ) mapa_y + y ][( int ) mapa_x + x ];
wys_mape();
textprintf_ex( bufor, font, 10, 30, makecol( 255, 255, 255 ), - 1, "numer kafelki %d, x=%d,mx=%d,my=%d,y=%d,mario_y=%d,my+y=%d,mx+x=%d,mxx=%d, RodzajTerenuDolP = %d, RodzajTerenu = %d, RodzajTerenuDolL = %d, RodzajTerenuPrzed = %d, RodzajTerenuGorP = %d", test, RodzajTerenu, mxx );
if( key[ KEY_RIGHT ] && RodzajTerenuBok == 0 && RodzajTerenuNad == 0 || key[ KEY_RIGHT ] && RodzajTerenuNad > 0 && RodzajTerenuBok2 > 0 && RodzajTerenuBok == 0 )
{
    mapa_x--;
    mmx++;
}
if( RodzajTerenu == 0 )
{
    mario_y++;
}
Podpowiedzcie mi którą zmienną mogę użyć do zatrzymania ludka na połowie kafelki...

PS: Odczytuje mi już dobrze na jakiej kafelce jest ludek, ale ludek jak jest na pół na kafelce to spada...
P-47099
Winner
Temat założony przez niniejszego użytkownika
» 2012-01-04 15:16:05
Witam, z góry przepraszam, że pisze post pod postem ale chcę "odświeżyć" temat.
Mam jeszcze jeden problem z kolizją, tym kodem
int RodzajTerenu = map[ my + y + 1 ][ mxx ];
Sprawdzam kolizje w tym miejscu:
[IMG]http://www.iv.pl/images/11493838714481624311.png[/IMG]

Tym kodem
int RodzajTerenuBok = map[ my + y ][ mxx + 1 ];
W tym miejscu:
http://www.iv.pl/images/86368114480920830384.png

Tym kodem
int RodzajTerenuNad = map[ my + y + 1 ][ mxx + 1 ];
Sprawdzam kolizje w tym miejscu:
http://www.iv.pl/images/84494110406125681728.png


I teraz pytanie:
Jak sprawdzić kolizje tylko w tym miejscu:
http://www.iv.pl/images/83236652463125004123.png


PS: Jak wstawić zdjęcie aby się otworzyło w miniaturce w moim poście?
P-47210
pekfos
» 2012-01-04 15:51:24
PS: Jak wstawić zdjęcie aby się otworzyło w miniaturce w moim poście?
» KursyKurs STC kurs

I teraz pytanie:
Jak sprawdzić kolizje tylko w tym miejscu:
http://www.iv.pl/images/83236652463125004123.png
Na mapie kafelkowej nie sprawdzisz kolizji z obiektem mniejszym od kafla -.- trzymaj wyjątki w jakimś pliku jako zestawy współrzędnych i sprawdzaj je.
P-47212
Winner
Temat założony przez niniejszego użytkownika
» 2012-01-04 16:13:23
Tak, ale bym musiał zrobić bardzo dużo taki wyjątków, bo ja chcę na razie zrobić proste wchodzenie po stopniach. Wygląda to mniej więcej tak:
0,0,0,0,1,0,
0,0,0,1,0,0,
0,0,1,0,0,0,
0,1,0,0,0,0,
1,0,0,0,0,0

Mam taki kod:
C/C++
//W prawo
int RodzajTerenu = map[ my + y + 1 ][ mxx ];
int RodzajTerenuBok = map[ my + y ][ mxx + 1 ];
int RodzajTerenuNad = map[ my + y + 1 ][ mxx + 1 ];
int RodzajTerenuBok2 = map[ my + y + 1 ][ mxx ];
//w lewo
int RodzajTerenuDolLL = map[( int ) mapa_y + y ][( int ) mapa_x + x - 1 ];
int RodzajTerenuDolPP = map[( int ) mapa_y + y + 1 ][( int ) mapa_x + x - 1 ];
int RodzajTerenuGorPP = map[( int ) mapa_y + y + 1 ][( int ) mapa_x + x ];
int RodzajTerenuGor = map[( int ) mapa_y + y ][( int ) mapa_x + x ];
wys_mape();
textprintf_ex( bufor, font, 10, 30, makecol( 255, 255, 255 ), - 1, "numer kafelki %d, x=%d,mx=%d,my=%d,y=%d,mario_y=%d,my+y=%d,mx+x=%d,mxx=%d, RodzajTerenuDolP = %d, RodzajTerenu = %d, RodzajTerenuDolL = %d, RodzajTerenuPrzed = %d, RodzajTerenuGorP = %d", test, RodzajTerenu, mxx );
if( key[ KEY_RIGHT ] && RodzajTerenuBok == 0 && RodzajTerenuNad == 0 || key[ KEY_RIGHT ] && RodzajTerenuNad > 0 && RodzajTerenuBok2 > 0 && RodzajTerenuBok == 0 )
{
    mapa_x--;
    mmx++;
}
if( RodzajTerenu == 0 && RodzajTerenuNad == 0 )
{
    mario_y++;
}
I aktualnie jest tak, że ja upadnę na stopień prawym rantem mojego ludka to nie mogę się ruszyć... Na ziemi jest ok, bo jak lewy róg wynosi > 0 to mogę się ruszyć, a na brzegu stopnia jak jestem i lewa część ludka wystaje poza stopien to lewy róg tego ludka wynosi 0 i nie mogę się ruszyć...
P-47215
pekfos
» 2012-01-04 16:17:02
To zostaje ci zrobienie kafla schodów, narysowanie sceny i kolizje per-pixel.
P-47217
Winner
Temat założony przez niniejszego użytkownika
» 2012-01-04 16:19:51
Kafelki schodów już mam.
Czy Kolizję którą miałeś na myśli to to coś podobnego do tego
http://www.easykoder.vot.pl/arty/wormsowamapa
P-47218
pekfos
» 2012-01-04 16:23:28
no coś takiego.

Wiesz, gdybyś podzielił się swoją wizją mapy w grze, nie musielibyśmy się z tobą męczyć naprawiając błędy w kolizjach które i tak teraz trzeba zmienić -.-
P-47220
Winner
Temat założony przez niniejszego użytkownika
» 2012-01-04 16:26:40
Wizją mapy w grze? To znaczy? Chcę stworzyć prostą grę - typu mario, ale nie chcę sprawdzać kolizji po współrzędnych ponieważ w przyszłości planuję zrobić edytor map... Żeby każdy mógł zrobić własną mapkę.


Czy dla kolizji per-pixel mam tło wypełnić jakimś kolorem i sprawdzać czy na przykład na dole ludka nie ma piksela o innym kolorze albo z przodu ludka?
P-47221
1 2 3 4 5 « 6 » 7 8
Poprzednia strona Strona 6 z 8 Następna strona