Nieścisłości w liczeniu przesunięcia kamery [sfml]
Ostatnio zmodyfikowano 2016-10-10 09:40
Saran Temat założony przez niniejszego użytkownika |
Nieścisłości w liczeniu przesunięcia kamery [sfml] » 2016-10-07 21:54:55 #include <SFML/Graphics.hpp>
int main() { sf::View view; sf::RenderWindow window( sf::VideoMode( 800, 600, 32 ), "" ); window.setVerticalSyncEnabled( 1 ); window.setView( view ); sf::CircleShape shape; shape.setRadius( 50 ); shape.setFillColor( sf::Color::Blue ); shape.setPointCount( 5 ); sf::Vector2f start_m_pos = window.mapPixelToCoords( sf::Mouse::getPosition( window ) ); sf::Vector2f last_m_pos = start_m_pos; bool movestart = 0, moveend = 1; while( window.isOpen() ) { sf::Event zdarzenie; while( window.pollEvent( zdarzenie ) ) { if( zdarzenie.type == sf::Event::Closed ) window.close(); if( zdarzenie.type == sf::Event::MouseMoved && movestart ) { start_m_pos = window.mapPixelToCoords( sf::Mouse::getPosition( window ) ); if( start_m_pos != last_m_pos ) { view.move( 0 -( start_m_pos.x - last_m_pos.x ), 0 -( start_m_pos.y - last_m_pos.y ) ); last_m_pos = start_m_pos; } } if( sf::Mouse::isButtonPressed( sf::Mouse::Right ) && moveend ) { moveend = 0; start_m_pos = window.mapPixelToCoords( sf::Mouse::getPosition( window ) ); if( !movestart ) { movestart = 1; last_m_pos = start_m_pos; } } if( !sf::Mouse::isButtonPressed( sf::Mouse::Right ) && movestart ) { movestart = 0; moveend = 1; } } window.clear( sf::Color::White ); window.setView( view ); window.draw( shape ); window.setView( window.getDefaultView() ); window.display(); } return 0; }
Wie ktoś z czego może to wynikać? Pozycja kursora na mapie będzie różnić się od pozycji początkowej po przesunięciu. |
|
Saran Temat założony przez niniejszego użytkownika |
» 2016-10-10 09:40:54 Wynikało to z różnych rozdzielczości view i default view. |
|
« 1 » |