Prosty ruch samochodowy w GM

Klikipedia - klikowa encyklopedia
Wersja z dnia 20:31, 13 cze 2007 autorstwa Morty (dyskusja | edycje) (przeróbka artykułu Ciapka)
(różn.) ‹Starsza wersja | zobacz obecną wersję (różn.) | Nowsza wersja› (różn.)
Skocz do: nawigacji, wyszukiwarki
Autor.jpg
Autorem tego artykułu jest
Ciapek

Artykuł ten pokazuje, jak stworzyć najprostszy ruch samochodowy. Istotą tego ruchu jest to, że klawisze "strzałka w lewo" i "strzała w prawo" odpowiadają za zmianę kierunku, a klawisze "strzałka w górę" i "strzałka w dół" za sterowanie prędkością.

Realizacja

1. Tworzymy sprite, przedstawiający nasz obiekt

2. Tworzymy obiekt, nazywamy go obj_car i przypisujemy do niego sprite, utworzony w kroku 1

3. Teraz stworzymy zmianę kierunku. Aby to zrobić, dodaj zdarzenie Keyboard Left i wykonaj przy nim następujący kod:

if(speed>0)
{
   direction+=3;
}

Analogicznie, dodaj zdarzenie Keyboard Right i umieść w nim następujący kawałek kodu:

if(speed>0)
{
   direction-=3;
}

4. Czas na sterowanie prędkością. W zdarzeniu Keyboard Up umieść następujący kod:

if(speed+0.5<4) {
   speed+=0.5;
} else {
   speed=4;
}

Jeśli prędkość nie przekracza 4, to zwiększ ją o 0.5


W zdarzeniu Keyboard Down dodaj kod:

if(speed-0.5>0) {
   speed-=0.5;
} else {
   speed=0;
}

Dopóty prędkość jest większa niż zero, zmniejszaj ją o 0.5

5. Stwórz nowy room i umieść w nim obiekt obj_car.

Koncepty do rozwinięcia

  • prędkość skręcania w zależności od tempa jazdy. Aby uzyskać realistyczny efekt pamiętaj, że dla prędkości 0 tempo skręcania powinno być równe 0, dla prędkości większych od zera funkcja prędkości skręcania w zależności od szybkości auta powinna być odwrotnie zależna.
  • prędkość przyspieszenia może być zależna od podłoża. Użyj odpowiednich funkcji aby sprawdzić, na jakim podłożu znajduje się samochód.
  • zadbaj o obsługę przeszkód - najprostszym rozwiązaniem jest ustawienie prędkości na -1*speed w momencie kolizji ze ścianą
  • po puszczeniu strzałki samochód powinien się powoli zatrzymywać - uwzględnij to zdarzenie sprawdzając, czy strzałka NIE jest wciśnięta