Skocz do zawartości

Problem ze sterowaniem samochodu


Eugenius

Rekomendowane odpowiedzi

Witam wszystkich. Jestem nowym fanem GM :thumbsup: .

Podczas zabawy z tym programem postanowiłem zrobić samochodówkę. Niestety pojawił się problem. Mianowicie kiedy chcę skręcić w lewo mój samochód przeskakuje od razu o 360 stopni. W prawo skręca tak jak chciałem. Nie wiem czym to jest spowodowane. Staram się omijać pisanie w GML-u. Więc jak ktoś byłby tak miły i pokazał jak to zrobić na klockach (jeżeli się nie da to trudno spróbuje z kodem). Rozumiem ,że możecie mieć problem ze zrozumieniem więc zamieszczam link abyście sami zobaczyli:

samochod_wka.gmk


Z góry dzięki za pomoc
Odnośnik do komentarza
Udostępnij na innych stronach

Aleś tam namotał xD

Nie potrzebnie robiłeś trylion obiektów na taką prostą czynność. Ich nazewnictwo też nie było poprawne. W nazwach wszelkich zasobów nie mogą występować spacje, można używać tylko angielskie znaki a pierwszy znak nie może być cyfrą. Nazwy nie mogą się powtarzać. To taka informacja

 

a teraz do rzeczy:

https://gmclan.org/up539_12_Samochod_wka.html

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Jeśli nie masz wciśniętego klawisza odpowiadającego za przyśpieszanie samochodu to

zmniejszaj zmienną speed

Odnośnik do komentarza
Udostępnij na innych stronach

ciekawe poco dałeś if direction < 0 direction = 360 skoro ta zmienna zawsze jest w zbiorze liczb 0 - 360

 

lepsza wersja i czytelniejsza:

GML
// system ruchu

if ( keyboard_check(vk_up) ) // jesli trzymamy wcisnieta strzalke w gore

speed = min( speed + 1, maxspeed ); // samochod przyspiesza o 1 i nie przekroczy predkosci maxspeed

if ( keyboard_check(vk_left) ) // jesli wcisniemy strzalke w lewo

direction += 10; // skrecamy o kat 10 stopni w lewo

if ( keyboard_check(vk_right) ) // jesli wcisniemy strzalke w prawo

direction -= 10; // skrecamy o kat 10 stopni w prawo

friction = 0.2; // automatyczne zwalnianie

// zostala nam tylko animacja

image_single = direction/10;

Odnośnik do komentarza
Udostępnij na innych stronach

Możesz znrobić to np tak:

w step

GML
if ( collision_circle( x, y, 32, trawa, 1, 0 ) ) friction = 0.3;

else

if ( collision_circle( x, y, 32, asfalt, 1, 0 ) ) friction = 0.2;

else

if ( collision_circle( x, y, 32, piasek, 1, 0 ) ) friction = 0.4;

else friction = 0

gdzie trawa, asfalt, piasek to nazwy obiektów.

Odnośnik do komentarza
Udostępnij na innych stronach

GML
if ( collision_circle( x, y, 32, trawa, 1, 0 ) ) { friction = 0.3; maxspeed = 4; }

else

if ( collision_circle( x, y, 32, asfalt, 1, 0 ) ) { friction = 0.2; maxspeed = 10; }

else

if ( collision_circle( x, y, 32, piasek, 1, 0 ) ){ friction = 0.4; maxspeed = 2; }

else friction = 0;

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