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

Budynki w grze 2D RPG

Ostatnio zmodyfikowano 2024-08-31 16:25
Autor Wiadomość
pekfos
» 2024-08-30 23:34:49
Ciężko mi sobie wyobrazić co musiałbyś mieć w kodzie by osiągnąć tu O(n2). Ale póki nie jesteś pewny jak to wszystko ma wyglądać, zrób najprościej.
P-181536
tBane
Temat założony przez niniejszego użytkownika
» 2024-08-31 16:25:59
Ok zrobiłem to renderowanie tych czterech czarnych prostokątów. Wszystko działa. Myślę, że temat wyczerpany. Dzięki za rady ! :-)

C/C++
void coverOutsideIfPlayerInBuilding() {
   
for( auto & b: buildings ) {
       
if( b->playerInside() ) {
           
           
int x1, x2, y1, y2;
           
x1 = b->position.x - b->size.x / 2 * 16;
           
x2 = b->position.x + b->size.x / 2 * 16;
           
y1 = b->position.y - b->size.y * 16;
           
y2 = b->position.y;
           
           
           
sf::RectangleShape rectTop( sf::Vector2f( screenWidth, y1 - cam->position.y + screenHeight / 2 ) );
           
rectTop.setFillColor( sf::Color::Black );
           
rectTop.setPosition( cam->position.x - screenWidth / 2, cam->position.y - screenHeight / 2 );
           
window->draw( rectTop );
           
           
sf::RectangleShape rectBottom( sf::Vector2f( screenWidth, cam->position.y + screenHeight / 2 - y2 ) );
           
rectBottom.setFillColor( sf::Color::Black );
           
rectBottom.setPosition( cam->position.x - screenWidth / 2, y2 );
           
window->draw( rectBottom );
           
           
sf::RectangleShape rectLeft( sf::Vector2f( x1 - cam->position.x + screenWidth / 2, y2 - y1 ) );
           
rectLeft.setFillColor( sf::Color::Black );
           
rectLeft.setPosition( cam->position.x - screenWidth / 2, y1 );
           
window->draw( rectLeft );
           
           
sf::RectangleShape rectRight( sf::Vector2f( cam->position.x + screenWidth / 2 - x2, y2 - y1 ) );
           
rectRight.setFillColor( sf::Color::Black );
           
rectRight.setPosition( x2, y1 );
           
window->draw( rectRight );
           
       
}
    }
}

P-181537
1 2 « 3 »
Poprzednia strona Strona 3 z 3