• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

SFML SF::View problem.

VPS Starter Arubacloud
0 głosów
409 wizyt
pytanie zadane 29 sierpnia 2016 w C i C++ przez sprytny22 Obywatel (1,130 p.)

Witam, jestem w trakcie pisania gierki i mam pewnien problem z poruszaniem mapy.

http://cpp0x.pl/forum/temat/?id=8695

chodzi mi o cos podobnego jak pod tym linkiem a dokładniej o poruszanie mapy gdy myszka dotknie krawedzi mapy. Mi chodzi o to abym gdy nacisne LPM kursor zniknął(to akurat wiem jak zrobic) i aby mapa przesuwała sie odwrotnie do kierunku myszy chodzi mi tu o takie przesuwanie jak np na Google maps. Jakieś pomysły nie wiem jak sie do tego zabrać probowałem na swoje nieudolne sposoby ale nic mi nie wychodzilo . ;/

3 odpowiedzi

0 głosów
odpowiedź 29 sierpnia 2016 przez MetRiko Nałogowiec (37,110 p.)
Potrzebujesz przede wszystkim punku odniesienia.. tj. pozycji kliknięcia (ustawiasz tylko raz, w momencie kliknięcia).. i odległości od tej pozycji (aktualizujesz, inaczej mówiąc.. pozycja kursora).. następnie prosta zabawa z matematyką obliczaniem różnic pozycji x i y.
0 głosów
odpowiedź 29 sierpnia 2016 przez afferu Mądrala (5,220 p.)
0 głosów
odpowiedź 1 września 2016 przez sprytny22 Obywatel (1,130 p.)

Mam kolejny problem to mój kod:

sf::Vector2f v1, v2;
		static int x_static = 0, y_static = 0;
		int x, y;

		if (!sf::Mouse::isButtonPressed(sf::Mouse::Left))
		{
			sf::Vector2f mouse(sf::Mouse::getPosition(win));
			v1 = mouse;
		}
		if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
		{
			sf::Vector2f mouse_2(sf::Mouse::getPosition(win));

			v2 = mouse_2;
			x = (v1.x - v2.x) - x_static;
			y = (v1.y - v2.y) - y_static;
			x_static = x_static + x;
			y_static = y_static + y;
			view_.setCenter(view_.getCenter().x + x, view_.getCenter().y + y);


		}

 

Gdy klikam przycisk to wszystko fajnie przesuwa sie mapka, ale gdy puszcze i przesunę mysz w inne miejsce i klikne to srodek przesuwa sie w inne miejsce. Nie wiem o co chodzi mecze sie od paru godzin, pewnie jakas drobnostka :( Pomoże ktos?

komentarz 1 września 2016 przez Gracjan Pasik Obywatel (1,810 p.)
19 linije zamień na: view_.move(v1,v2);

i wytłumacz dokładniej problem czego oczekujesz a co się dzieje, bo nie rozumiem co chcesz osiągnąć
komentarz 1 września 2016 przez sprytny22 Obywatel (1,130 p.)
Chce osiagnac taki efekt jak napiałem wyzej "abym mógl przesuwać mape tak jak np google maps". Moj amatorski skrypt nie robi tego jak robic powinien tzn gdy klikne na dowolne miesce na mapie to setCenter() sie przemieszcza sie tak jak by od poczatku programu liczył trase myszki od polozenia na poczatku programu, a tak byc nie powinno. Nie wiem jak lepiej to wytłumaczyc musiałbys skompilować to i sam zobaczyc jak działa. Ps wiem ze mój kod moze byc brzydki czy cos ale jestem początkujacym koderem, prosze o wyrozumiałosc.

Podobne pytania

0 głosów
0 odpowiedzi 109 wizyt
0 głosów
0 odpowiedzi 168 wizyt
pytanie zadane 3 stycznia 2018 w C i C++ przez szym3ns Użytkownik (860 p.)
0 głosów
1 odpowiedź 268 wizyt

92,839 zapytań

141,780 odpowiedzi

320,855 komentarzy

62,171 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...