Skocz do zawartości

Rekomendowane odpowiedzi

Wyścigi Top-Down

Kurs z serii "TipTop" by DobryZiom

 

Wstęp:

Witam.Widząc jak na forum GMClan, w dziale "Pytania Początkujących" powstaje wiele nowych tematów wynikających z bezmyślnego kopiowania przykładów

i składania ich w kupę postanowiłem napisać kurs "TipTop". W kursie tym będę starał wytłumaczyć absolutnie wszystko co będzie zawarte w kursie.

Na pierwszy ogień pójdzie tworzenie wyścigów top-down.

 

ZACZYNAMY!

 

1.Grafika

Nie będę tu tłumaczył jak robić grafikę, lecz powiem co nam będzie potrzebne. Mianowicie:

-Samochód - W tym artykule użyje tylko dwóch samochodów. Pierwszym będziemy się poruszać my, a drugim bot

-Droga - Jako że robimy grę samochodową, powinniśmy po czymś jeździć. Dróg może być kilka typów(asfalt,żwir...do wyboru do koloru)

-Elementy Otoczenia - Dla urozmaicenia wyglądu naszego świata powinniśmy dodać elementy otoczenia. Mogą to być drzewa, kamienie, głazy, budynki,

lampy drogowe, ławki i co jeszcze sobie tylko wymarzysz

-"Kropki" - Nie wiem jak to nazwać...Będziemy potrzebowali czegoś, co nie będzie widoczne(bo tak ustawimy), ale będzie potrzebna do ustawienia drogi

botowi(do jego AI). Mogą to być kropki, kwadraty i co sobie tylko chcecie :)

 

2.Dźwięk

Jeszcze nigdy na gmclan nie widziałem samochodówki z dźwiękiem samochodu, dlatego postanowiłem pokazać jak to zrobić(z użyciem dlla, ponieważ gm

nie posiada funkcji do prędkości odtwarzania). W celu stworzenia dźwięku musisz "warknąć" do mikrofonu "trrr"(tylko nie za mocno bo się wystraszy) :D

Widziałem to kiedyś w jakimś kursie Allegro(c++) i naprawdę fajnie wychodzi :D

 

3.Kodzenie

No i przyszedł czas na najlepsze :) W tym dziale zrobimy użytek z tych grafik i dźwięku!

 

3.1.Gracz

Stwórz objekt "Gracz" i daj mu sprite jednego z samochodów

3.1.1.Przygotowanie

Na początek w create damy zmienne z których później będziemy korzystać:

GML
friction=0.1//Hamowanie samochodu po puszczeniu gazu

maxspd_up=10//maxymalna prędkość do przodu

maxspd_down=-5//maxymalna prędkość do tylu

przyspieszenie_up=0.5//przyspieszenie do przodu

przyspieszenie_down=0.2//przyspieszenie do tylu

skret=4//skręcanie w lewo i w prawo</span></span></span></span></span></span></span>

3.1.2.Jazda

bez zbędnego gadania...step:

GML
if keyboard_check(ord("W")) and speed<maxspd_up//jesli wciśniemy W

{ //i prędkość nie jest większa od maxymalnej

speed+=przyspieszenie_up//przyspieszamy

}

if keyboard_check(ord("S")) and speed>maxspd_down//na odwrót

{

speed-=przyspieszenie_down//zwalniamy

}

if keyboard_check(ord("A"))//jeśli wciśniemy A

{

if speed>0 then direction+=skret//jeśli jedziemy do przodu to normalnie skręca w lewo

if speed<0 then direction-=skret//a jeśli jedziemy do typu to jest odwrotnie

}

if keyboard_check(ord("D"))//jeśli wciśniemy D

{//to w 2 strone jest odwrotnie :)

if speed>0 then direction-=skret

if speed<0 then direction+=skret

}

if keyboard_check(vk_space)//jeśli wciśniemy spacje

{//hamowanie

if speed>1 then speed-=1//jeśli szybkość większa od 1 to odejmuje 1

if speed<-1 then speed+=1//i odwrotnie

if speed<1 and speed>-1 then speed=0//jeśli w przedziale szybkości -1 do 1 to zatrzymuje

}

image_angle = direction//to jest dla spriteya...żeby się obracał :)</span></span></span></span></span></span></span>

3.1.3.Dźwięk

Jak wcześniej powiedziałem, w tym artykule pokaże jak zrobić dźwięk samochodu :D Biblioteka jest w paczce z przykładem.

Create:

GML
XaudioHeader()//Nagłówek

XaudioInit('XeAudiere.dll')//inicjacja biblioteki

silnik=XmusicLoad('auto.wav')//wczytanie dźwięku</span></span></span></span></span></span></span>

Step:

GML
XmusicPitch(silnik,1*(speed/maxspd_up*1.5))//ustalamy szybkość odtwarzania dźwięku w zależności od szybkości :)

//można się tym trochę pobawić :)

if XmusicIsPlaying(silnik)=false//jeśli dźwięk nie jest teraz odtwarzany

{

XmusicPlay(silnik)//to go odtwarzamy...bo samochód działa :D

}

Game End:

GML
XmusicFree(silnik)//zwalniamy dźwięk

XaudioFree()//i bibliotekę</span></span></span></span></span></span></span>

I to by było na tyle co do gracza :)

 

*****

UWAGA:

Artykuł nie jest jeszcze skończony, jutro lub jeszcze dziś dodam 2 połowę :)

*****

 

Przykład v2(zoptymalizowane odtwarzanie dźwięku silnika):

https://gmclan.org/up6605_4_9c86ec350c.html

 

*******************************************************************

Drugiej części nie będzie.Zamiast niej stworzę mini silniczek gier wyścigowych

*******************************************************************

Odnośnik do komentarza
Udostępnij na innych stronach

To tak się nie robi, że najpierw się daje zmienne z których się będzie korzystać, bo przecież to wychodzi w praktyce.

Lepiej jakbyś zrobił w trakcie poradnika, teraz zrobimy blablabla, <tutaj wytłumaczyć jak to zrobić> ale najpierw musi dodać zmienne w Create odpowiadające za <blablabla>. :)

Odnośnik do komentarza
Udostępnij na innych stronach

Były już podobne przykłady, ale były takie z fizyką, lub np. mój dawny przykład z biegami, obrotomierzem i prędkościomierzem. A co do dźwięku - na "niskich" fajnie brzmi nawet, ale na wyższych obrotach to już lipnie. No, ale pracuj pracuj nad tym przykładem, może wyjdzie z tego jakiś endżin.

Odnośnik do komentarza
Udostępnij na innych stronach

Skoro powiedziałeś że to kurs dla tępych którzy tworzą gry sklejając przykłady. Wyprzedzę ich i pozwolę sobie zadać kilka noobskich pytań:

1. Przepisałem kod wszystko tak jak tutaj ale podczas gry kiedy wciskam "D" obrazek nie skręca czemu???

2. Czemu gdy włączam grę wyskakuje mi błąd "i tu jest ten błąd co mówi że potrzebujesz wersji pro"

 

Wiesz założyłem że to jest bardzo początkujący czytacz który pierwszy raz włączył GM i nie wie co i jak. Ogólnie wyszło to nijak.

 

A mam jeszcze jedno pytanie... nie jest przypadkiem coś źle z jazdą do tyłu i skręcaniem bo jak analizowałem kod to raz jest "+" a raz "-" sprawdzałeś czy te kody działają zgodnie z prawami fizyki. Nie wiem może się mylę.

 

sprawdziłem przykład i jest dobrze więc się nie czepiam.

Odnośnik do komentarza
Udostępnij na innych stronach

https://gmclan.org/up6605_4_9c86ec350c.html

@gnysek:hmmm...nie ma.

@Lechu4444: ja nie powiedziałem że to dla takich noobów tylko... głównie. Do tego trzeba GM'a PRO :)

Wiem że do tego trzeba mieć pro przecież ja na to zwróciłem uwagę że gdy ktoś zaczyna przygodę z GM to nie kupuje PRO.

Odnośnik do komentarza
Udostępnij na innych stronach

jejku...ale to ma być tylko przykład prostej wyścigówki...to może zamiast kończyć arta zrobię taki wyrąbiasty przykład z biegami,AI bota,fizyką,licznikiem itp?

tylko nie zapomnij o ultra-fotorealistycznej grafice ;)

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