[SFML 1.6] strzelanie seriami
Ostatnio zmodyfikowano 2013-11-21 21:56
Unnamed789 Temat założony przez niniejszego użytkownika |
» 2012-12-23 21:45:57 A jak się podpina kod źródłowy do posta? lol |
|
SeaMonster131 |
» 2012-12-23 22:08:41 Kurs STCDokładniej mówiąc: [cpp] kod [/cpp] |
|
Unnamed789 Temat założony przez niniejszego użytkownika |
» 2012-12-23 22:19:26 W takim razie ponawiam pytanie :) #include <SFML/Graphics.hpp> #include <vector>
int main() { sf::RenderWindow oknoAplikacji( sf::VideoMode( 800, 600, 32 ), "The Project" ); sf::Image obrazek; obrazek.LoadFromFile( "ludek.png" ); sf::Sprite naszSprajt; naszSprajt.SetImage( obrazek ); naszSprajt.SetPosition( 400, 300 ); naszSprajt.SetScale( 0.25, 0.25 ); std::vector < sf::Shape > magazynek; bool czyWystrzelony = false; while( oknoAplikacji.IsOpened() ) { oknoAplikacji.Clear( sf::Color( 255, 0, 0 ) ); sf::Event zdarzenie; while( oknoAplikacji.GetEvent( zdarzenie ) ) { if( zdarzenie.Type == sf::Event::Closed ) oknoAplikacji.Close(); if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Escape ) oknoAplikacji.Close(); if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Space ) { czyWystrzelony = true; magazynek.push_back( sf::Shape::Circle( naszSprajt.GetPosition().x, naszSprajt.GetPosition().y + 67, 5, sf::Color::White ) ); } } const sf::Input & sterowanie = oknoAplikacji.GetInput(); if( sterowanie.IsKeyDown( sf::Key::Left ) ) naszSprajt.Move( - 0.2, 0 ); if( sterowanie.IsKeyDown( sf::Key::Right ) ) naszSprajt.Move( + 0.2, 0 ); if( sterowanie.IsKeyDown( sf::Key::Up ) ) naszSprajt.Move( 0, - 0.2 ); if( sterowanie.IsKeyDown( sf::Key::Down ) ) naszSprajt.Move( 0, + 0.2 ); if( czyWystrzelony == true ) { for( unsigned int i = 0; i < magazynek.size(); i++ ) { oknoAplikacji.Draw( magazynek[ i ] ); magazynek[ i ].Move( + 0.25, 0 ); if( magazynek[ i ].GetPosition().x > 800 ) { magazynek.erase( magazynek.begin() + i ); } } } oknoAplikacji.Draw( naszSprajt ); oknoAplikacji.Display(); } return 0; }
|
|
DejaVu |
» 2012-12-23 22:22:47 Nie rysujesz żadnego tła, a zatem wydajność aplikacji jest dużo wyższa, niż gdy zaczynasz smarować małe obiekty na scenie. Wypełnij całe tło jakąś teksturą, to rysowanie pocisków stanie się prawie nieodczuwalne. |
|
Unnamed789 Temat założony przez niniejszego użytkownika |
» 2012-12-26 18:44:50 Trochę poeksperymentowałem i zauważyłem, że gdy zmienię swój pocisk z obiektu klasy Shape na obiekt klasy Sprite to uzyskuje znaczny przyrost fps. Jednak chciałbym zachować wygląd swojego pocisku, czy da się jakoś użyć obiektu klasy Shape jako obiektu klasy Sprite? |
|
Mrovqa |
» 2012-12-26 20:33:30 Możesz go sobie wyrenderować i potem wczytać z pliku. |
|
Raciawelli |
» 2013-11-21 21:56:10 << removed. Masz problem? - załóż odpowiedni temat >> |
|
1 « 2 » |