Ruszanie kamerą w grze 2D
Ostatnio zmodyfikowano 2020-03-16 21:22
Żerbo Temat założony przez niniejszego użytkownika |
Ruszanie kamerą w grze 2D » 2020-03-16 14:48:08 Mam problem, bo chcę aby grze podświetlały się te kwadraty na których jest myszka obecnie. Chcę również aby móc kamerę przesuwać i problem pojawia się gdy już tą kamerę przesunę, wtedy myszka się tak jakby rozjeżdża z danym kwadratem. Wygląda to tak, że na starcie programu tam gdzie najadę to dany kwadrat zmienia kolor, natomiast gdy przesunę kamerę to mysz mysz jest np w rogu ekranu a podświetlony kwadrat jest w zupełnie innym miejscu. Gdy nie ruszam myszką podczas ruchu kamery to kwadrat zostaje w miejscu a mysz idzie tam gdzie kamera. A chciałbym aby to dzialo się równocześnie. Zawsze tam gdzie mysz tam i podświetlony kwadrat. Pomocy! kod Okna i kamery: Okno.create( VideoMode( 900, 600, 32 ), "Projekt Gry" ); Okno.setFramerateLimit( 60 ); Okno.setActive( true );
View cam; cam.setSize( Okno.getSize().x, Okno.getSize().y ); cam.setCenter( cam.getSize().x / 2, cam.getSize().y / 2 );
Ruch kamery if( Akcja.type == Event::KeyPressed && Akcja.key.code == Keyboard::W ) { cam.move( 0, - 15 ); Okno.setView( cam ); } if( Akcja.type == Event::KeyPressed && Akcja.key.code == Keyboard::S ) { cam.move( 0, 15 ); Okno.setView( cam ); } if( Akcja.type == Event::KeyPressed && Akcja.key.code == Keyboard::A ) { cam.move( - 15, 0 ); Okno.setView( cam ); } if( Akcja.type == Event::KeyPressed && Akcja.key.code == Keyboard::D ) { cam.move( 15, 0 ); Okno.setView( cam ); }
|
|
pekfos |
» 2020-03-16 18:10:39 A kod od myszki? |
|
Żerbo Temat założony przez niniejszego użytkownika |
» 2020-03-16 18:41:10 To jest kod odpowiedzialny za ruch postaci i za podświetlenie pola przy najechaniu myszą. int PosX = Mouse::getPosition( Okno ).x; int y = PosX / 64; int PosY = Mouse::getPosition( Okno ).y; int x = PosY / 64;
for( int a = 0; a < 30; a++ ) { for( int b = 0; b < 30; b++ ) { if( Mapa[ a ][ b ].myszka == true ) Mapa[ a ][ b ].myszka = false; } }
if( Mapa[ x ][ y ].obraz.getGlobalBounds().contains( PosX, PosY ) ) { Mapa[ x ][ y ].myszka = true; if( Ruch == true && Akcja.type == Event::MouseButtonPressed && Akcja.mouseButton.button == Mouse::Left ) { Postac.x = x; Postac.y = y; } }
|
|
pekfos |
» 2020-03-16 19:44:19 |
|
Żerbo Temat założony przez niniejszego użytkownika |
» 2020-03-16 21:22:26 Dziękuje!! |
|
« 1 » |