Millä perusteella liukuminen toteutetaan YLEENSÄ 2d autopeleissä?
No varmaan niin että x ja y arvoja ei vähennetä ja lisätä yhtäaikaa.
Käännetään autoa, mutta jatketaan liikettä samaan suuntaan. Ei ole järin vaikeaa.
Onnistuu ainakin jos käyttää kahta suuntaa (auton ja liikkumisen.)
Joka kierroksella tarkistetaan onko suunnat samat, jos ei ole, niin käännetään liikkeen suuntaa hieman auton suuntaan päin.
Jos ollaan normaalilla maalla niin käännetään enemmän ja jos ollaan liukkaalla niin käännetään vähemmän.
Minusta tuo menee yksinkertaisimmin niin, että lisätään x- ja y-nopeutta auton suunaan mukaan, ja samalla koko ajan kitka tietysti hidastaa auton liikettä. Näin ollen liikkuminen mukautuu sopivalla vauhdilla auton suuntaan. Tätä tapaa käytin mm. Linkku3D:n esimerkkipelissä.
Yksinkertaisimmin sitä voisi demonstroida näin:
Xnopeus = Xnopeus + Sin(Kulma) * Kaasu //kaasu lisää nopeutta Ynopeus = Ynopeus - Cos(Kulma) * Kaasu //kulman suuntaan Xnopeus = Xnopeus / 1.01 //kitka hidastaa liikettä Ynopeus = Ynopeus / 1.01
Sitten jos todella edistynyttä fysiikan mallinnusta käytetään, niin se ei toimi näin yksinkertaisesti. Tällä tekniikalla en ole vielä onnistunut estämään auton kääntämistä realistisesti silloin kun auto ei ole liikkeessä. Käsittääkseni silloin pitäisi ruveta laskemaan myös renkaiden koordinaatteja ja asentoja yms.
Itse toteutin tuon tapaisen efektin räiskintäpeliini sillä, että liikesuunnan asteluku lisätään liikuttaessa tyypin normaaliin astelukuun, ja vähennetään taas liikkumisen jälkeen. Liikkeen tapahtuessa taas lasketaan vanhan ja halutun liikesuunnan keskiarvo (sopivassa suhteessa, jotta käännös olisi hitaampi). Efekti on ko. pelissä heikko, joten aitoudesta on vaikea sanoa mitään, mutta ainakin jotakin tapahtuu.
Tuon auton kääntämisen saattaisin tehdä niin, että olisi kaksi astelukua: Auton suunta ja renkaiden suunta suhteessa autoon. Autoa siirrettäisiin eteenpäin (1 - sin(Nopeus * RenkaidenSuunta)) * Nopeus
ja auton suuntaan lisättäisiin renkaiden suunta. Tällöin kääntyminen hidastaisi vauhtia, ja paikallaan kääntyminen ei onnistuisi. Nopeassa vauhdissa auto kääntyisi saman verran samalla matkalla, mutta ajallisesti nopeammin. Tähän voisi vielä liittää tuon liukuefektini, jolloin lopputulos olisi ihan kiva. Pitääkin kokeilla joskus :D
Aihe on jo aika vanha, joten et voi enää vastata siihen.