Skocz do zawartości

Przesuwanie kamery palcem


Kewin

Rekomendowane odpowiedzi

Nie wiem jak zrobić kamerę tak jak w grze np. Hotel Empire Tycoon. Próbowałem znaleźć jakieś tutoriale ale nie znalazłem takiego ruchu kamery. Ma to działać na mobilnych urządzeniach. Ktoś wie jak to zrobić? 

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Generalnie nie ma różnicy czy palcem czy myszką. Proces nie jest taki trudny i dotyczy ogólnie przesuwania czegoś w grze, oczywiście piszę z głowy wiec musisz przetestować i dostroić, mogłem pomylić plusy i minusy w drugiej części:

 

W Create tworzysz zmienne, które przetrzymują pozycje myszki i kamery gdy zaczynaliśmy przesuwanie

mx = 0;
my = 0;
vx = 0;
vy = 0;

W mouse button pressed:

mx = mouse_x;
my = mouse_y;
vx = <view_x>; // (zależnie czy GMS1 czy 2 to będzie view_x[0] albo camera_get_view_x(view_camera[0]);
vy = <view_y>; // jak wyżej

W mouse button down:

 

GMS 1:

view_x = vx + (mouse_x - mx);
view_y = vy + (mouse_y - my);

GMS2:

camera_set_view_pos(view_camera[0], vx + (mouse_x - mx), vy + (mouse_y - my));

I to wszystko. Oczywiście można próbować to jakoś upłynnić, dodać zwiększanie prędkości przesuwania itp., no ale to już jest znacznie, znacznie więcej roboty.

Odnośnik do komentarza
Udostępnij na innych stronach

20 godzin temu, gnysek napisał:

Generalnie nie ma różnicy czy palcem czy myszką. Proces nie jest taki trudny i dotyczy ogólnie przesuwania czegoś w grze, oczywiście piszę z głowy wiec musisz przetestować i dostroić, mogłem pomylić plusy i minusy w drugiej części:

 

W Create tworzysz zmienne, które przetrzymują pozycje myszki i kamery gdy zaczynaliśmy przesuwanie


mx = 0;
my = 0;
vx = 0;
vy = 0;

W mouse button pressed:


mx = mouse_x;
my = mouse_y;
vx = <view_x>; // (zależnie czy GMS1 czy 2 to będzie view_x[0] albo camera_get_view_x(view_camera[0]);
vy = <view_y>; // jak wyżej

W mouse button down:

 

GMS 1:


view_x = vx + (mouse_x - mx);
view_y = vy + (mouse_y - my);

GMS2:


camera_set_view_pos(view_camera[0], vx + (mouse_x - mx), vy + (mouse_y - my));

I to wszystko. Oczywiście można próbować to jakoś upłynnić, dodać zwiększanie prędkości przesuwania itp., no ale to już jest znacznie, znacznie więcej roboty.

No właściwie to nie działa

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

@Kewin Wszystko w kodzie się zgadza, pewnie użyłeś zwykłego eventu mouse left pressed/down, zamiast global mouse left pressed/down.

 

Proszę, oto gotowy przykład (podzieliłem tylko w camera set view różnicę przez 2, wolniej wtedy kamera się przesuwa 2x): https://gmclan.org/up23_18_camera_drag.html

 

 

Odnośnik do komentarza
Udostępnij na innych stronach

A jak zrobić żeby kamera ruszała się na odwrót niz teraz, żeby bylo tak że jak jedziesz palcem w góre to kamera w dół. Teraz jest tak że jek przejedziesz palcem do góry to kamera idzie do góry a chciałbym na odwrót to zrobić.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...