ďťż

Ł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
  •