Budynki w grze 2D RPG
Ostatnio zmodyfikowano 2024-08-31 16:25
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. |
|
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 ! :-) 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 ); } } }
|
|
1 2 « 3 » |