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

[SFML]Wychodzenie po za okno

Ostatnio zmodyfikowano 2015-02-07 21:05
Autor Wiadomość
JanekJr
Temat założony przez niniejszego użytkownika
[SFML]Wychodzenie po za okno
» 2015-02-07 19:24:49
Witam. Biblioteką SFML zajmuję się drugi dzień ale całkiem dobrze mi idzie. Mam tylko jeden problem, jakie macie sposoby na to aby, grafika nie wychodziła po za okienko? To mój pierwszy temat więc proszę o wyrozumiałość :D
P-126143
NopeDotAvi
» 2015-02-07 19:29:26
Chodzi Ci o to, że gdy się ruszasz to jak np. masz okno 800x600 to nie może wyjść poza 800 i poniżej 0? Jeżeli tak to musisz sam to zaimplementować.

mniej więcej tak:
C/C++
void checkCollWithBorder( sf::Sprite & sprite ) //lub jakiś inny obiekt niz sprite
{
    if( sprite.getPosition().x <= 0 ) //wychodzi poza
    if( sprite.getPosition().x + sprite.getTexture()->getSize().x >= 800 ) //wychodzi poza
    if( sprite.getPosition().y <= 0 ) //wychodzi poza
    if( sprite.getPosition().y + sprite.getTexture()->getSize().y >= 600 ) //wychodzi poza
}
P-126144
JanekJr
Temat założony przez niniejszego użytkownika
» 2015-02-07 19:36:21
Trochę tego nie rozumiem, mógłbyś rozjaśnić?
P-126145
pekfos
» 2015-02-07 19:42:40
Mam tylko jeden problem, jakie macie sposoby na to aby, grafika nie wychodziła po za okienko?
Najbanalniejszy i oczywisty sposób: sprawdzasz czy współrzędna jest mniejsza od zera, lub większa od rozmiaru okna minus rozmiar obiektu. Jeśli jest, ustawiasz sprawdzaną współrzędną na wartość, z którą była porównywana. W ten sposób obiekt zamiast wyjść poza okno, zatrzyma się przy krawędzi. I to robiłby powyższy kod, gdyby był kompletny i prawidłowo zapisany.
P-126146
NopeDotAvi
» 2015-02-07 19:44:44
C/C++
void checkCollWithBorder( sf::Sprite & sprite ) //lub jakiś inny obiekt niz sprite[/cpp] - zwyczajna funkcja, do której posyłamy obiekt sf::Sprite (można dać zamiast sf::Sprite np. sf::CircleShape, albo sf::RectangleShape)
[ cpp ] if( sprite.getPosition().x <= 0 ) //wychodzi poza[/cpp] początki współrzędnych x i y każdego okna to lewy górny róg. Pozycja "x" to pozioma, także sprawdzamy czy pozycja 'x' gracza (czyli ta na szerokość) jest mniejsza bądź równa 0, jeżeli tak to jest kolizja.

     kolejne linie kodu s ą praktycznie takie same jak ta, tylko inn ą pozycj ę sprawdzamy.
P-126147
JanekJr
Temat założony przez niniejszego użytkownika
» 2015-02-07 21:05:40
Dzięki wielki NioeDotAvi, pomogło :D
P-126165
« 1 »
  Strona 1 z 1