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

Kolizje prymitywów

Ostatnio zmodyfikowano 2023-08-28 12:45
Autor Wiadomość
tBane
Temat założony przez niniejszego użytkownika
» 2023-08-20 13:59:49
Działa. Ale... Spadły FPS'y z 60 na marne 4-5. Oto kod
C/C++
for( map * m = firstMap; m != NULL; m = m->next )
{
   
/*
  if(
   cam->pointOnView( m->centerx, m->centery) ||
   cam->pointOnView(m->left, m->top) ||
   cam->pointOnView(m->right, m->top) ||
   cam->pointOnView(m->left, m->bottom) ||
   cam->pointOnView(m->right, m->bottom) ||
   cam->pointOnView(m->centerx, m->top) ||
   cam->pointOnView(m->centerx, m->bottom) ||
   cam->pointOnView(m->left, m->centery) ||
   cam->pointOnView(m->right, m->centery)
   )
   boolean = false;
  else
   boolean = true;
  */
   
   
if(
   
abs( cam->right - m->left ) <( scrw + m->w ) / 2.f &&
   
abs( cam->top - m->bottom ) <( scrh + m->h ) / 2.f
   
)
       
 boolean = true;
   
else
       
 boolean = false;
   
/*
  if ( m->visible == true && boolean == false )
   deleteUnvisibleObjectsFromRender( m );
 
  if( m->visible == false && boolean == true )
  {
   addVisibleObjectsToRender( m );
   //executeScriptsMap( m );
  }
  */
   
m->visible = boolean;
}
}
P-180314
pekfos
» 2023-08-20 14:20:25
To chyba znaczy że nie działa. Zwłaszcza że efekt tej kolizji jest teraz przeciwny niż w poprzednich źródłach? Jeśli "mapa" koliduje z "kamerą", to raczej jest wtedy widoczna?
P-180316
tBane
Temat założony przez niniejszego użytkownika
» 2023-08-20 14:27:01
Dziś będę to testował. Wiecie, ja chyba tak szybko tego nie zrozumiem. Testuje różne warianty, aż trafię. Powiedzcie mi czy wszystkie kolizje w pierwszym poście mam poprawne, proszę. :-)

C/C++
for( map * m = firstMap; m != NULL; m = m->next )
{
   
   
if(
   
abs( cam->right - m->right ) <( scrw + m->w ) / 2.f &&
   
abs( cam->top - m->top ) <( scrh + m->h ) / 2.f
   
)
       
 boolean = true;
   
else
       
 boolean = false;
   
/*
  if ( m->visible == true && boolean == false )
   deleteUnvisibleObjectsFromRender( m );
 
  if( m->visible == false && boolean == true )
  {
   addVisibleObjectsToRender( m );
   //executeScriptsMap( m );
  }
  */
   
m->visible = boolean;
}
}
P-180317
tBane
Temat założony przez niniejszego użytkownika
» 2023-08-28 12:32:34
Podrzuci ktoś gotowca dla dwóch prostokatow opisanych przez cx, cy, left, right, top, bottom?
P-180343
DejaVu
» 2023-08-28 12:45:58
Na ich przecięcia? Zaimplementowane w SFML:
https://www.sfml-dev.org/documentation/2.6.0/classsf_1_1Rect.php#ac77531698f39203e4bbe023097bb6a13

Ściągnij sobie źródła - powinien to być jednolinijkowiec. Bez żadnych ABS-ów i innych dziwnych rzeczy.
P-180344
1 2 « 3 »
Poprzednia strona Strona 3 z 3