Skocz do zawartości
Kewin

Przesuwanie kamery palcem

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ć? 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Dobra, dzieki bardzo :) jutro zobaczę czy dziala 

Udostępnij tego posta


Odnośnik do posta
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

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Podpowiedz jaka wersja GMS, sprawdzę :D

btw. już widzę, że dla GMS1 powinno być np.view_x[0] więc jakieś błędy były ;)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
4 godziny temu, gnysek napisał:

Podpowiedz jaka wersja GMS, sprawdzę :D

btw. już widzę, że dla GMS1 powinno być np.view_x[0] więc jakieś błędy były ;)

I jak? 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jestem w pracy, na linuxie, nie ma szans na razie ;)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Spoczko ;)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

@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

 

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

A no faktycznie :oops: dzieki ci bardzo :)

Udostępnij tego posta


Odnośnik do posta
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ć.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

No to jest już matematyka z podstawówki, odwróć znak + na -  przy vy + (mouse_y - my) ;)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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

Tylko 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ę tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×