[SFML2] Pobranie pozycji obiektu innej klasy
Ostatnio zmodyfikowano 2016-01-04 21:02
Lukasz1212 Temat założony przez niniejszego użytkownika |
» 2016-01-04 20:46:11 Dynamicznie alokowałem ,żeby każdy pocisk móc usunąć jeśli wyjdzie poza okienko. Z drugim się zgodzę bo to pisałem tak dla testów. W takim razie jak mogę zastąpić to ,żeby nie używać współrzędnych gracza? Możesz mnie jakoś naprowadzić? Plan był taki: pobieram gdzie jest gracz i jak wciskam spację to pocisk ustawia się w miejsce gracza i wędruje w górę. |
|
pekfos |
» 2016-01-04 20:51:21 Statek strzela, a pocisk tylko leci w górę. Złóż sensowne zdanie po polsku i podział na klasy masz prawie gotowy. Dynamicznie alokowałem ,żeby każdy pocisk móc usunąć jeśli wyjdzie poza okienko. |
To ma jeszcze mniej sensu, niż moja teoria na ten temat, jak zobaczyłem tą alokację. |
|
Lukasz1212 Temat założony przez niniejszego użytkownika |
» 2016-01-04 20:54:42 Czyli metoda strzelająca będzie w Graczu? Zaraz coś pokombinuję ;) W takim przypadku w Graczu chcę użyć obiektu Pocisk czyli tej kulki |
|
pekfos |
» 2016-01-04 21:00:23 W takim przypadku w Graczu chcę użyć obiektu Pocisk czyli tej kulki |
Co..? Wydaje mi się, czy znowu niepotrzebnie komplikujesz? Jedyne co musi zrobić gracz, by wystrzelić pocisk, to utworzyć obiekt klasy Pocisk. |
|
Lukasz1212 Temat założony przez niniejszego użytkownika |
» 2016-01-04 21:02:27 No faktycznie :) przekombinowałem, jestem początkujący w klasach i trochę się w tym gubię. No więc teraz mam mały problem jak narysować ten pocisk na scenie. Tak wygląda teraz plik cpp void Gracz::Klawisze() { perfectFrameTime = 1.f / 60; timeModifier = iterationTime.asSeconds() / perfectFrameTime; controlClock.restart(); speed2 = 500; speed = 100; if( statek.getPosition().y >= 0 ) {; if( sf::Keyboard::isKeyPressed( sf::Keyboard::Up ) ) statek.move( sf::Vector2f( 0, - 1 ) * speed2 * perfectFrameTime ); } if( statek.getPosition().y <= 550 ) { if( sf::Keyboard::isKeyPressed( sf::Keyboard::Down ) ) statek.move( sf::Vector2f( 0, 1 ) * speed2 * perfectFrameTime ); } if( statek.getPosition().x >= 0 ) { if( sf::Keyboard::isKeyPressed( sf::Keyboard::Left ) ) statek.move( sf::Vector2f( - 1, 0 ) * speed2 * perfectFrameTime ); } if( statek.getPosition().x <= 748 ) { if( sf::Keyboard::isKeyPressed( sf::Keyboard::Right ) ) statek.move( sf::Vector2f( 1, 0 ) * speed2 * perfectFrameTime ); } bool strzal = false; if( sf::Keyboard::isKeyPressed( sf::Keyboard::Space ) ) { strzal = true; } if( strzal == true ) { int x = statek.getPosition().x; int y = statek.getPosition().y; Pocisk kulka( x, y ); } } void Gracz::Pozycja( int x, int y ) { statek.setPosition( x, y ); } Pocisk::Pocisk( int x, int y ) { kulka = CircleShape( 10 ); kulka.setPosition( x, y ); for( int i = 0; i < 750; i++ ) { kulka.move( sf::Vector2f( 0, 1 ) * speed * perfectFrameTime ); } }
void Pocisk::Rysuj( sf::RenderWindow & window ) { window.draw( kulka ); }
Pocisk::~Pocisk() { }
Czy mniej więcej o to chodzi? |
|
1 « 2 » |