LolikZabijaka Opublikowano 24 Czerwca 2018 Udostępnij Opublikowano 24 Czerwca 2018 Cześć, siedzę sobie teraz nad możliwością używania pojazdów w grze, napotkałem w sumie dwa problemy. Pierwszy polega na tym, że chciałbym dać możliwość polatania bokiem, przy wciśnięciu spacji, czyli po zarzuceniu rękawa pojazd nieznacznie zwalnia, ale można klawiszami kierunkowymi ustawiać jego kąt(przy zaciągniętym ręcznym wartości wychylenia będą większe, niż przy zwykłym skręcaniu) Niestety niezależne od tego czy zaciągnę rękaw, czy nie, auto nie zachowuje się tak jakbym chciał(zachowuje tę samą wartość skręcania) oto kod z klawisza "A" if speed>1{ direction += 1} if speed>4{ direction += 2} if speed>8{ direction += 3} if keyboard_check(vk_space) and keyboard_check(ord('W')) { speed-=0.3 image_angle+=18 trace_create(x+lengthdir_x(36,image_angle+180),y+lengthdir_y(36,image_angle+180),image_angle) } Drugi problem tyczy się kolizji, kiedy rozpędzam wóz i w coś przywalę, to auto owszem odbija się, tracąc prędkość(nadałem friction przy dzwonie), ale później nie mogę nim ruszyć, gdzie jest błąd? Kod z kolizji wozu z przeszkodą: if speed>1{ move_bounce_all(1) speed-=5 friction=3 } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 24 Czerwca 2018 Udostępnij Opublikowano 24 Czerwca 2018 No cóż, z pierwszym Ci nie pomogę ale powinienem mieć rozwiązanie na drugi problem. W twoim kodzie jak już w coś "przydzwonisz", to ustawiasz friction obiektu na 3, dlatego nie możesz dalej ruszyć pojazdem. Musisz ustawić friction z powrotem na 0. Proponuje alarmy, np: Create: alarm[0] = -1; Kolizja: if(speed > 1) { move_bounce_all(1) speed-=5 friction=3 alarm[0] = 0.5*room_speed; } Alarm[0]: friction = 0; W takim wypadku, po pół sekundy od kolizji znowu będziesz mógł prowadzić pojazd - czysto teoretycznie, bo nie sprawdzałem w praktyce, ale zapewne coś tą metodą osiągniesz Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 24 Czerwca 2018 Udostępnij Opublikowano 24 Czerwca 2018 A w jaki sposób rysujesz samochód? I czy masz gdzieś przypisany image_angle do direction? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 24 Czerwca 2018 Autor Udostępnij Opublikowano 24 Czerwca 2018 W draw rysuję jedynie jego cień, a image_angle jest przypisane w STEPIE. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 24 Czerwca 2018 Udostępnij Opublikowano 24 Czerwca 2018 Jak jest przypisane w ten sposób: image_angle = direction to nigdy nie będzie się ślizgać. Jakbyś zrobił lekka interpolację obrotu to by było wrażenie ślizgania ale to nie jest idealne: // obracanie sprita var diff = angle_difference(image_angle, direction); direction += diff*clamp(tireGrip, 0, 1); tireGrip sobie zdefiniuj w create, ta zmienna przyjmuje wartości od zera do jeden. Ale wpisz tam bardzo małe wartości np 0.01 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 24 Czerwca 2018 Autor Udostępnij Opublikowano 24 Czerwca 2018 Nie używam GMS, robię wszystko na GM8 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 24 Czerwca 2018 Udostępnij Opublikowano 24 Czerwca 2018 No to chyba pora się przesiąść na nowszy. funckje z gms których nie ma w gm8 są tutaj: http://www.gmlscripts.com/script/clamphttp://www.gmlscripts.com/script/angle_difference Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 30 Czerwca 2018 Autor Udostępnij Opublikowano 30 Czerwca 2018 Ok, to ogarnąłem po swojenu, pytanie z innej beczki, zrobiłem, aby po dodaniu gazu wózek kopcił. Sprawa niezwykle trywialna, ale nie pamiętam dobrze wszystkiego z Gma. Podczas jazdy dym ucieka gdzieś bokiem, mimo że ustawiłem aby tworzył się z pozycji np. x+5 y+10, oto kod: DODAWANIE GAZU: if ( wsiadanie == true ) { speed +=0.9 effect_create_below(ef_smokeup,x-50,y,1,c_blue) } if speed>=25{ speed=25 } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 30 Czerwca 2018 Udostępnij Opublikowano 30 Czerwca 2018 pojazd jest różnie obrócony, prawda? Użyj lengthdirów Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 1 Lipca 2018 Autor Udostępnij Opublikowano 1 Lipca 2018 Coś tam pomogło, ale nadal się krzaczy, dym leci inaczej, w zależności od kąta samochodu, gdzie jest babol? if ( wsiadanie == true ) { speed +=0.9 effect_create_below(ef_smokeup,x+lengthdir_x(-40,image_angle),y+lengthdir_y(0,image_angle),0.2,c_blue) } if speed>=25{ speed=25 } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 1 Lipca 2018 Udostępnij Opublikowano 1 Lipca 2018 Babol jest taki że zmieniasz pozycję dymu po elipsie a nie po okręgu. Wartość length musi być w obu osiach taka sama by obracał się po okręgu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 1 Lipca 2018 Udostępnij Opublikowano 1 Lipca 2018 Ale jeżeli samochód jest podłużny to pozycja wylotu też porusza się po elipsie. Może wartości są złe, ale niekoniecznie dlatego, że są nierówne. Edit: Wartości podaj w pikselach od origina samochodu. Zakładam że jest wycentrowany na środku, więc pewnie te wartości są nie tak. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 1 Lipca 2018 Udostępnij Opublikowano 1 Lipca 2018 Obrót samochodu i tak jest po okręgu. Więc i ta pozycja powinna być, chyba że w trakcie obrotu zmieniałby się origin. Przystaw sobie cyrkiel do dowolnego podłużnego obiektu, niech jedna noga cyrklu będzie originem tego obiektu a druga tym wylotem dymu i zacznij sobie ten przedmiot obracać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LolikZabijaka Opublikowano 1 Lipca 2018 Autor Udostępnij Opublikowano 1 Lipca 2018 1 godzinę temu, I am vader napisał: Ale jeżeli samochód jest podłużny to pozycja wylotu też porusza się po elipsie. Może wartości są złe, ale niekoniecznie dlatego, że są nierówne. Edit: Wartości podaj w pikselach od origina samochodu. Zakładam że jest wycentrowany na środku, więc pewnie te wartości są nie tak. Akurat ogrin jest bardziej z przodu(złudzenie napędu na tył). Czyli musi być jednakowa wartość? A jeśli orgin Y jest w centrum, to jak wyliczyć tę wartość w kodzie ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 1 Lipca 2018 Udostępnij Opublikowano 1 Lipca 2018 Jeśli origin masz na np. 17,13 a wydech na np. 14,20 to chcesz zrobić lengthdir_x(-3,image_angle) lengthdir_y(7,image_angle). To kwestia Pozycja-Origin Edit: Zakladajac czysto teoretycznie ze mam racje, czego sam nie jestem pewien bo robie to na sucho Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 1 Lipca 2018 Udostępnij Opublikowano 1 Lipca 2018 Musisz znać odległość w poziomie od originu do wydechu ( tutaj 125 pixeli ), oraz w pionie ( tutaj 20 pixeli ) I wyliczyć length "L" oraz kąt "a" Z twierdzenia pitagorasa to zrobisz: L = sqrt(125*125+20*20) = 126pix w przyblizeniu a kąt możesz obliczyć z dowolnej funkcji trygonometrycznej bo znasz już wszystkie boki. np: atan(20/125) = 9 stopni http://www.wolframalpha.com/input/?i=atan(20%2F125) Jak masz L i a to wpisujesz to do funkcji lengthdir(): effect_create_below(ef_smokeup,x+lengthdir_x(126,image_angle+9),y+lengthdir_y(126,image_angle+9),0.2,c_blue) a jak dym się będzie obracał na odwrót to wtedy image_angle daj na minus: effect_create_below(ef_smokeup,x+lengthdir_x(126,-image_angle+9),y+lengthdir_y(126,-image_angle+9),0.2,c_blue) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę