Skocz do zawartości

Rekomendowane odpowiedzi

Opublikowano

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

  • Administratorzy
Opublikowano

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.

Opublikowano
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

  • Administratorzy
Opublikowano

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 ;)

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

  • Administratorzy
Opublikowano

@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

 

 

Opublikowano

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

  • Administratorzy
Opublikowano

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

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