[SFML 2.1] Wartość NaN
Ostatnio zmodyfikowano 2013-09-12 17:38
Bimbol Temat założony przez niniejszego użytkownika |
[SFML 2.1] Wartość NaN » 2013-09-11 23:43:42 Witam, napotkałem się na dziwną wartość zwracaną przez vektor sprajta. Otóż w przypadku, gdy dwa sprajty są idealnie na siebie nałożone podczas próby sprawdzenia pozycji, kompilator wyświetla nan . Czy ktoś spotkał się już z czymś takim? Jeśli tak to czy mógł by mi przybliżyć szczegóły tego zjawiska. |
|
pekfos |
» 2013-09-12 13:21:52 Pokaż kod. |
|
Bimbol Temat założony przez niniejszego użytkownika |
» 2013-09-12 17:04:09 Musiał bym wysłać cały kod gry, bo po prostu wyświetla mi nan , gdy próbuję pobieram pozycje Sprajta za pomocą metody zwracającej vektor. Dokładniej sprajt.getPosition().x . |
|
pekfos |
» 2013-09-12 17:12:03 Wyświetlasz tę pozycję, czy, od tak, się pojawia? |
|
Bimbol Temat założony przez niniejszego użytkownika |
» 2013-09-12 17:38:19 Dobra przyjrzałem się sprawie i po analizie w którym momencie do tego dochodzi, odkryłem co jest przyczyną. Standardowo Sprajt pokazuje się w górnym lewym rogu. Gdy jakiś gracz dołącza do gry, to tworzy się drugi sprajt w tym samym miejscu, jeśli Host się nie poruszył. A metoda sprawdzająca kolizję wygląda tak: bool CPlayer::Collision( CPlayer * player ) { float side = sqrt( pow( Player.getPosition().x - player->GetPos().x, 2 ) + pow( Player.getPosition().y - player->GetPos().y, 2 ) ); if( side >= bRadius + player->GetRadius() ) { return false; } float x = Player.getPosition().x - player->GetPos().x; float y = Player.getPosition().y - player->GetPos().y; Player.move( x / side, y / side ); return true; } Przy pierwszym przejściu jeśli host się nie ruszy, to jest kolizja. Pozycja obu graczy jest ta sama, więc odejmowanie x1 od x2, y1 od y2 będzie 0. Podobnie ze side, które przyjmuje właśnie x i y, które w tym przypadku były równe 0 więc zwróciło nan. Zwyczajnie dzieliło przez 0. Zagadka rozwiązana. Myślałem, że to problem z SFML. Dzięki temu przynajmniej się czegoś dowiedziałem. |
|
« 1 » |