Skocz do zawartości

Rekomendowane odpowiedzi

Robiem gre na androida. Nie mam pojęcia jak zrobić coś w stylu joystica, którym będę mógł obracać objektem o 360 stopni i poruszać nim. Programójem dopiero parę miesięcy więc proszę o szczegółowe odpowiedzi.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

My potrzebujemy więcej informacji. Nie mamy pojęcia, jaką masz kamerę, nie wiemy jak chcesz sterować i co znaczy "będę mógł obracać obiektem o 360 stopni i poruszać nim". Opisz problem lepiej, jeśli oczekujesz "szczegółowych" odpowiedzi.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Używam kamery podążającej za graczem.

Chciałbym zrobić joystick np. taki ja w guns of boom. Czyli jak przesune główkę od joysticka do przodu to moja postać pójdzie do przodu i obróci się w taki sposób że twarzą będzie szedła do przodu a nie plecami. Moją postać widać z góry. Joystick ma być na ekranie bo to gra na androida.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Takie poruszanie, jakie opisałeś nie jest łatwe. Zaczynając od tego, że musisz rysować swój joystick na ekranie. Czego sposobów jest sporo. Najprostszy to rysowanie na warstwie GUI na stałej pozycji.

///Draw GUI
//oczywiście koordynanty dobierz pod rozdzielczość i UI
_x = 64
_y = 720-64
_r = 32
draw_circle(_x,_y,_r,1)

Tu będziesz miał od razu ustawione pozycje joysticka jako zmienne. Możemy je teraz wykorzystywać przy wykrywaniu inputu. Pytanie jest jednak jak w ogóle porusza się twoja postać? Bo sposobów są setki. 

if(mouse_check_button(mb_left)) {
	var mx = display_mouse_get_x();
	var my = display_mouse_get_y();
	if(point_in_circle(mx,my,_x,_y,_r)) {
		direction = point_direction(_x,_y,mx,my)
		speed = point_distance(_x,_y,mx,my)
	}
}

Oczywiście ustawienie direction i speed to tragiczne rozwiązanie... ale to jest kierunek w jakim ten przykład będzie podążać.

Samo wykrywanie joysticka też jest tylko konceptem który jest tragiczny. Traci input gdy wyjedziesz palcem poza joystick. Musisz sprawdzać czy pierwsze dotknięcie jest na joysticku i czy gracz kontynuuje trzymanie palca

 

Jakbyś pokazał screen to rozwiał byś 80% pytań.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Screen 

20190731_110445.jpg

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Joystick 

20190731_110641.jpg

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

To akurat jest przykład screenów które nic nie wnosza

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Czego wysłać screen?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jak twoja postać wygląda w grze. Jak odbywa się poruszanie.

I poza tym zacząć już próbować. Całego rozwiązania na tacy nie dostaniesz, szczególnie że w większości zależy od twojej gry i nie jest to uniwersalne rozwiązanie.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Pierwsze zdjęcie przedstawia postać na razie jest prosta bo zajmujem się programowaniem.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Nie chodzi mi o grafikę postaci, a o to jak ona wygląda w świecie gry. Potrzebny screen z gry. Screen tego jak twoja postać się porusza, nie screen z edytora grafiki. To mi prawie nic nie dało.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

if (keyboard_check(vk_left))
{
image_angle = image_angle + 3;
    audio_sound_pitch(silnik,random_range(59.2,59.4))
    audio_play_sound(silnik,6,0);
}

if (keyboard_check(vk_right))
{
image_angle = image_angle - 3;
    audio_sound_pitch(silnik,random_range(59.2,59.4))
    audio_play_sound(silnik,6,0);
}

if (keyboard_check(vk_up))
{
motion_add(image_angle, 0.03);
    audio_sound_pitch(silnik,random_range(0.2,0.4))
    audio_play_sound(silnik,0,0);
}

 

Chciałbym tak zrobić żeby to wszystko robił joystick.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

OK bardzo ładnie. Więc to powinno zadziałać. Co prawda wymaga masy tweekowania jak pisałem wyżej:

if(mouse_check_button(mb_left)) {
	var mx = display_mouse_get_x();
	var my = display_mouse_get_y();
	if(point_in_circle(mx,my,_x,_y,_r)) {
		image_angle += (_x-my)/10
		motion_add(image_angle, (_y-my)/30)
	}
}

Wartości 10 i 30 to taka na oko "czułość".

Oczywiście nic nie testowałem, nie mam przy sobie programu.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

co oznacza "_r "?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Zmienna, która jest wykorzystywana w funkcji do rysowania okręgu oraz funkcji do sprawdzania, czy zaszło dotknięcie. Polecam kliknąć na funkcję i wcisnąć F12

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

ok, dzieki,dopiero zaczynam przygodę z programowaniem ;)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Spokojnie. Jeszcze wiele pytań cię czeka. Śmiało pytaj

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
if(mouse_check_button(mb_left)) {
	var mx = display_mouse_get_x();
	var my = display_mouse_get_y();
	if(point_in_circle(mx,my,_x,_y,_r)) {
		image_angle += (_x-my)/10
		motion_add(image_angle, (_y-my)/30)
	}
}

ten kod do step event joystick?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Dalej to jest draw GUI event. Z tego powodu że potrzebujesz mieć wcześniej zdefiniowane pozycje joystika

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Narysowało takie kółko. Ale nic ono nie robi.

20190731_141752.jpg

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

To prawdopodobnie musisz zamienić funkcje display_mouse_get_x() na window_mouse_get_x(). Piszę z głowy, nie pamiętam

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Pewnie dobrze mi napisałeś ale ja coś źle robię. Mam sam event draw gui tak ma być czy ma być jeszcze np. create event.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Dodaj jeszcze to i sprawdź czy kółko rysuje ci się pod palcem

draw_circle(display_mouse_get_x(),display_mouse_get_y(),8,0)

Jeżeli nie to spróbuj z tymi drugimi funkcjami które podałem

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Pojawiło się kółko ale nie lata koło kursora tylko raz jest daleko raz blisko 

20190731_150627.jpg

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

postać się rusza ale nie można nad nią zapanować 

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Bo motion_add dodaje prędkośc, ale nigdy jej nie zatrzymujesz. Pewnie dodanie else { speed = 0; } za ostatnim nawiasem klamrowym załatwi sprawę.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
Cytuj

ata koło kursora tylko raz jest daleko raz blisko

Co to znaczy? Musisz umieć to zinterpretować. Ta kopka pokazuje punkt w który mgra myśli że dotykasz ekranu. Musisz pokombinować by było dobrze. Tutaj nie pomogę. Za dużo rzeczy zależnych od ciebie w projekcie

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

_x = 130
_y = 1000-64
_r = 64
draw_circle(_x,_y,_r,10)

if(mouse_check_button(mb_left)) {
    var mx = window_mouse_get_x();
    var my = window_mouse_get_y();
    if(point_in_circle(mx,my,_x,_y,_r)) {
        image_angle += (_x-my)/10
        motion_add(image_angle, (_y-my)/30)
    }
}
else { speed = 0; }

draw_circle(display_mouse_get_x(),display_mouse_get_y(),8,0);

 

 

postać można teraz zatrzymać ale idzie tam gdzie ona chce a nie ja

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Postać idzie tam, gdzie dotkniesz palcem w okręgu względem jego środka. Jak chcesz ruch taki jak gałką analogową na padzie, to są gotowe przkłady na yoyogames.com, w marketplace albo na forum. Coś na tej zasadzie ?
 

 

 

 

Update:

albo np. to: https://marketplace.yoyogames.com/assets/483/easy-mobile-controls

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Tak dokładnie o takie mi chodziło. Ale mam inną wersję game makera czy przez to może coś u mnie inaczej działać?

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

×