Ĺadny brzuch
Witam!
Pisze engine 3d do mojej gierki! Wszytsko narazie mi sie podoba ale mam problem a mianowicie jesli dojde do granicy konca swiata to ruch sie zatrzymuje. Teraz chcailem zrobic takie cos by po styknieciu sie z 3 z 4 stron domku ruch tez sie zatrzymywal ale nie wiem jak to zroic :/ Probowalem na rozne sposoby ale nic mi to nie dawalo. Mysle ze wy mi w tym pomozecie. oto kod:
void RysujDomek( const TPointf& p9, const TPointf& p10, const TPointf& p11, const TPointf& p12, GLfloat krotnoscX, GLfloat krotnoscY ) { glBegin( GL_QUADS ); glTexCoord2f( 0, 0 ); glVertex3f( p9.x, p9.y, p9.z ); glTexCoord2f( krotnoscX, 0 ); glVertex3f( p10.x, p10.y, p10.z ); glTexCoord2f( krotnoscX, krotnoscY ); glVertex3f( p11.x, p11.y, p11.z ); glTexCoord2f( 0, krotnoscY ); glVertex3f( p12.x, p12.y, p12.z ); glEnd(); } bool OgraniczeniaRuchu( GLfloat LP, GLfloat PT, GLfloat rX, GLfloat rZ ) { return ( fabs( LP ) >= rX || fabs( rPT ) >= rZ ); } void Poruszanie( int key, int x, int y ) { const GLfloat deltaY = 5.0f, deltaXZ = 15.0f; const double r = M_PI / 180.0; GLfloat xx = cos( katY * r ) * deltaXZ, zz = sin( katY * r ) * deltaXZ; switch ( key ) { case GLUT_KEY_LEFT: katY -= deltaY; break; case GLUT_KEY_RIGHT: katY += deltaY; break; case GLUT_KEY_DOWN: if ( !OgraniczeniaRuchu( LP + zz, PT - xx, 500.0f, 500.0f)) { LP += zz; PT -= xx; } break; case GLUT_KEY_UP: if ( !OgraniczeniaRuchu( LP - zz, PT + xx, 500.0f, 500.0f )) { LP -= zz; PT += xx; } break; } }
TPointf p9 = { -60.0f, 49.0f, -60.0f }, p10 = { -60.0f, 49.0f, 60.0f }, p11 = { 60.0f, 49.0f, 60.0f }, p12 = { 60.0f, 49.0f, -60.0f }, p13 = { -60.0f, -49.0f, -60.0f }, p14 = { -60.0f, -49.0f, 60.0f }, p15 = { 60.0f, -49.0f, 60.0f }, p16 = { 60.0f, -49.0f, -60.0f }; //rysowanie domku glEnable( GL_TEXTURE_2D ); glBindTexture( GL_TEXTURE_2D, tex[4] ); glColor3f( 1.0f, 1.0f, 1.0f ); RysujDomek( p13, p9, p10, p14, 1, 4 ); glColor3f( 1.0f, 1.0f, 1.0f ); RysujDomek( p12, p16, p15, p11, 1, 4 ); glColor3f(1.0f, 1.0f, 1.0f ); RysujDomek( p9, p13, p16, p12, 1, 4 ); glColor3f( 1.0f, 1.0f, 1.0f ); RysujDomek( p11, p15, p14, p10, 1, 4 ); glBindTexture( GL_TEXTURE_2D, tex[5] ); glColor3f( 1.0f, 1.0f, 1.0f ); RysujDomek( p9, p12, p11, p10, 1, 4 ); glBindTexture( GL_TEXTURE_2D, tex[6] ); glColor3f( 1.0f, 1.0f, 0.0f ); RysujDomek( p13, p14, p15, p16, 10, 10 );
Mysle ze mi pomozecie :] A oto link do tego Engine 3D
Już ci mówiłem, że ta metoda, którą stosujesz jest dobra tylko na początek. Lepiej sobie zrób taki kwadrat wokół obiektów i sprawdzaj, czy nie nastąpiło przecięcie jego ( to się nazywa kolizja 2D na 3D ) - poszukaj na necie.
a mnie się ten świat bardzo podoba i zastanawia mie coś :
dlaczego wszyscy w OpenGl robicie a nie w np. DirecX ?
dlaczego wszyscy w OpenGl robicie a nie w np. DirecX ?
Już ci mówiłem, że ta metoda, którą stosujesz jest dobra tylko na początek. Lepiej sobie zrób taki kwadrat wokół obiektów i sprawdzaj, czy nie nastąpiło przecięcie jego ( to się nazywa kolizja 2D na 3D ) - poszukaj na necie. Tak jak mowiłeś poszukałem na necie i znalazłem przecinanie lini przez bryły czy cos w tym stylu. Zrobilem tak jak tam bylo opisane oczywiscie odpowednio do mojego kodu ale nic z tego nic nie wychodzi :/ Może ktos byl by chętny i zrobił by mi tą kolizję??? Byłbym wdzięczny... W sieci jest dużo rzeczy ale mi nie działa chodź robię to dokładnie tak jak opisano to w artykułach z poprawkami tak by zmienne dokładnie były takie same jak te w moim kodzie. Więc proszę o poprawiony kod.
hmm... widze ze nikt nie chce pomoc :( innym osoba pomagacie (np. jak napisac program ktory sie rozsyla jako zalacznik),a tego malego problemu nie chceci rozwiazac :/ mysle ze to sie zmieni ???
hmm... widze ze nikt nie chce pomoc :( innym osoba pomagacie (np. jak napisac program ktory sie rozsyla jako zalacznik),a tego malego problemu nie chceci rozwiazac :/ mysle ze to sie zmieni ???
hmm... widze ze nikt nie chce pomoc :( innym osoba pomagacie (np. jak napisac program ktory sie rozsyla jako zalacznik),a tego malego problemu nie chceci rozwiazac :/ mysle ze to sie zmieni ???
Real_Noname dzieki za podpowiedz, ale jeszcze musze Cie o kilka rzeczy zapytac ale to juz na GG bo nie chce mi sie tutaj tego pisac. Jesli bedziesz miec czas to zagadam.
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Pisze engine 3d do mojej gierki! Wszytsko narazie mi sie podoba ale mam problem a mianowicie jesli dojde do granicy konca swiata to ruch sie zatrzymuje. Teraz chcailem zrobic takie cos by po styknieciu sie z 3 z 4 stron domku ruch tez sie zatrzymywal ale nie wiem jak to zroic :/ Probowalem na rozne sposoby ale nic mi to nie dawalo. Mysle ze wy mi w tym pomozecie. oto kod:
void RysujDomek( const TPointf& p9, const TPointf& p10, const TPointf& p11, const TPointf& p12, GLfloat krotnoscX, GLfloat krotnoscY ) { glBegin( GL_QUADS ); glTexCoord2f( 0, 0 ); glVertex3f( p9.x, p9.y, p9.z ); glTexCoord2f( krotnoscX, 0 ); glVertex3f( p10.x, p10.y, p10.z ); glTexCoord2f( krotnoscX, krotnoscY ); glVertex3f( p11.x, p11.y, p11.z ); glTexCoord2f( 0, krotnoscY ); glVertex3f( p12.x, p12.y, p12.z ); glEnd(); } bool OgraniczeniaRuchu( GLfloat LP, GLfloat PT, GLfloat rX, GLfloat rZ ) { return ( fabs( LP ) >= rX || fabs( rPT ) >= rZ ); } void Poruszanie( int key, int x, int y ) { const GLfloat deltaY = 5.0f, deltaXZ = 15.0f; const double r = M_PI / 180.0; GLfloat xx = cos( katY * r ) * deltaXZ, zz = sin( katY * r ) * deltaXZ; switch ( key ) { case GLUT_KEY_LEFT: katY -= deltaY; break; case GLUT_KEY_RIGHT: katY += deltaY; break; case GLUT_KEY_DOWN: if ( !OgraniczeniaRuchu( LP + zz, PT - xx, 500.0f, 500.0f)) { LP += zz; PT -= xx; } break; case GLUT_KEY_UP: if ( !OgraniczeniaRuchu( LP - zz, PT + xx, 500.0f, 500.0f )) { LP -= zz; PT += xx; } break; } }
TPointf p9 = { -60.0f, 49.0f, -60.0f }, p10 = { -60.0f, 49.0f, 60.0f }, p11 = { 60.0f, 49.0f, 60.0f }, p12 = { 60.0f, 49.0f, -60.0f }, p13 = { -60.0f, -49.0f, -60.0f }, p14 = { -60.0f, -49.0f, 60.0f }, p15 = { 60.0f, -49.0f, 60.0f }, p16 = { 60.0f, -49.0f, -60.0f }; //rysowanie domku glEnable( GL_TEXTURE_2D ); glBindTexture( GL_TEXTURE_2D, tex[4] ); glColor3f( 1.0f, 1.0f, 1.0f ); RysujDomek( p13, p9, p10, p14, 1, 4 ); glColor3f( 1.0f, 1.0f, 1.0f ); RysujDomek( p12, p16, p15, p11, 1, 4 ); glColor3f(1.0f, 1.0f, 1.0f ); RysujDomek( p9, p13, p16, p12, 1, 4 ); glColor3f( 1.0f, 1.0f, 1.0f ); RysujDomek( p11, p15, p14, p10, 1, 4 ); glBindTexture( GL_TEXTURE_2D, tex[5] ); glColor3f( 1.0f, 1.0f, 1.0f ); RysujDomek( p9, p12, p11, p10, 1, 4 ); glBindTexture( GL_TEXTURE_2D, tex[6] ); glColor3f( 1.0f, 1.0f, 0.0f ); RysujDomek( p13, p14, p15, p16, 10, 10 );
Mysle ze mi pomozecie :] A oto link do tego Engine 3D
Już ci mówiłem, że ta metoda, którą stosujesz jest dobra tylko na początek. Lepiej sobie zrób taki kwadrat wokół obiektów i sprawdzaj, czy nie nastąpiło przecięcie jego ( to się nazywa kolizja 2D na 3D ) - poszukaj na necie.
a mnie się ten świat bardzo podoba i zastanawia mie coś :
dlaczego wszyscy w OpenGl robicie a nie w np. DirecX ?
dlaczego wszyscy w OpenGl robicie a nie w np. DirecX ?

Już ci mówiłem, że ta metoda, którą stosujesz jest dobra tylko na początek. Lepiej sobie zrób taki kwadrat wokół obiektów i sprawdzaj, czy nie nastąpiło przecięcie jego ( to się nazywa kolizja 2D na 3D ) - poszukaj na necie. Tak jak mowiłeś poszukałem na necie i znalazłem przecinanie lini przez bryły czy cos w tym stylu. Zrobilem tak jak tam bylo opisane oczywiscie odpowednio do mojego kodu ale nic z tego nic nie wychodzi :/ Może ktos byl by chętny i zrobił by mi tą kolizję??? Byłbym wdzięczny... W sieci jest dużo rzeczy ale mi nie działa chodź robię to dokładnie tak jak opisano to w artykułach z poprawkami tak by zmienne dokładnie były takie same jak te w moim kodzie. Więc proszę o poprawiony kod.
hmm... widze ze nikt nie chce pomoc :( innym osoba pomagacie (np. jak napisac program ktory sie rozsyla jako zalacznik),a tego malego problemu nie chceci rozwiazac :/ mysle ze to sie zmieni ???
hmm... widze ze nikt nie chce pomoc :( innym osoba pomagacie (np. jak napisac program ktory sie rozsyla jako zalacznik),a tego malego problemu nie chceci rozwiazac :/ mysle ze to sie zmieni ???

hmm... widze ze nikt nie chce pomoc :( innym osoba pomagacie (np. jak napisac program ktory sie rozsyla jako zalacznik),a tego malego problemu nie chceci rozwiazac :/ mysle ze to sie zmieni ???

Real_Noname dzieki za podpowiedz, ale jeszcze musze Cie o kilka rzeczy zapytac ale to juz na GG bo nie chce mi sie tutaj tego pisac. Jesli bedziesz miec czas to zagadam.