A fizikai motor belső nézet
Ebben a cikkben megnézzük a használata a fizika, hogy szimulálja a dobás lövedékek (igen, csak úgy, mint az Angry Birds). Figyelünk használatának alapjait 2D fizika, valamint a teremtés fizikai testek, impulzusok és erők. Ne felejtsük el, hogy vegye figyelembe a legnépszerűbb játék motorok 2D szimuláció a fizikai világban.
Funkciók fizikai motor
Miért kell használni valamilyen fizikai motort? És mi ez valójában?
B
Általános fizikai motor nagyon hasznos. Ez lehetővé teszi, hogy nem értünk két fontos dolgot:
- Kimutatása ütközés (ütközés) a két játék tárgyak;
- Utánzás erők és mozgalmak eredményeként az ütközés.
ütközésészlelés
A játék nem lenne nagyon érdekes, ha a karakter esett volna át a szót, ne vegye egy lépést, vagy ugrik. Vagy ha az egyik lábad a karakter volna áthaladt az ellenség, hogy szeretné rúgni. Ütközésellenőrzés lehetővé teszi a nagyon pontosan meghatározni a kölcsönhatás a két test.
utánzás erő
Mi történjen az ütközés után? Előfordulhatnak különböző jelenségek: a karakter tud ugrani, ugrani bármely más játék célja, és talán akkor csak mozog bármely irányba. Mindez úgy történik, hogy a motor a színfalak mögött. De a hatalom, amely képes szimulálni a fizikai motor nem korlátozódnak ütközések. Vannak olyan fogalmak, mint a gravitáció és a lendület. Ők lehet alkalmazni, hogy a testek, akkor is, ha még nem találkoztam. Továbbá, ezek az erők befolyásolják az intézkedéseket, amelyek előfordulnak a játékban, a hősök a mozgás és maga a világ.
Nos, nézzük meg röviden a készülék fizikai motort, de először a figyelmünket, hogy a faj, és kiválasztani a szükségleteink szerint.
Kiválasztása fizikai motor
Ezen a ponton két lehetősége van. Mindkét változat egyaránt előnyei és hátrányai:
- Meglévő fizikai motor;
- Írjon végrehajtás (a preferencia és kurtizánok).
Meglévő motor
Van néhány nagy kész lehetőségeket. Az egyik legnépszerűbb motor 2D-s játékok minden bizonnyal, Box2D. Eredetileg C ++ nyelven íródott, de már portolták szinte minden népszerű programozási nyelveket. Egy másik ismert motor kellően Chipmink 2D. amit használnak, mint a fő keretek, mint Cocos2d.
Írás a motort
Néhány játék a meglévő megoldások - felesleges luxus. Az a tény, hogy a fizikai motor használ sok értékes memóriát, és szerény játékok okozhatnak szükségtelen terhet jelent, ami elkerülhető lett volna. Elfogadom, egyszerű platformer vagy Arkanoid nem kell számítani a kapcsolati helyzetben pixel pontossággal. Erőforrásokat kell tölteni a számítás egy ilyen konfliktus, tudjuk tölteni máshol, hol lenne a megfelelőbb.
Igen, hozzon létre saját fizikai motort kapsz nagyobb rugalmasságot a kész terméket. De ne felejtsük el, hogy ez a folyamat meglehetősen szigorú, és akkor, a végén, akkor észre valamit bonyolultabb, mint ahogyan ez történik a kész motort.
Mielőtt úgy a tulajdonságait a fizika és a modellezés adatai, nézzük meg, hogy mi történik az egyes játékkeret a megközelítés „fej”:
Egy tipikus játék ciklus minden egyes képkocka tartott négy lépést, a következő sorrendben:
Megjegyezzük, hogy a keret rendering után történik fizikai szimuláció. Ez a sorrend természetesen nem mentes értelme.
A fix frame rate ellen változó
Beszéljünk a frame rate: fix (fix) és változó (frame függő mértékben). frissítés módszer az úgynevezett egyszer keret szerencsejáték jelenet. Ha az eljárás fizikai szimulációt a metódust a frissítést, akkor a fizikai világ függ a frame rate. Ez ahhoz vezethet, hogy irreális magatartás fizikai testek. Az iOS, ezt a hatást érjük el, egy logikai tulajdonság usesPreciseCollisionDetection. De mi a helyzet a többi operációs rendszer?
Tekintsük a kódot:
Ez a kód célja, hogy kompenzálja a problémákat a időkülönbségekkel. Tulajdonképpen ez lesz a helyzet, ha a játék során, hogy hívtál. Akkor a segítségével egy ilyen algoritmus helyreállítani a időkülönbségekkel (a játék 60 FPS).
Ez tulajdonképpen az első lépés a fogalom a munka fizikai motort. Igen, az előző kódrészlet teszi a szimuláció sokkal stabilabb, de a probléma, hogy nem oldja meg. Ehhez el kell távolítani a hívás fizika szimuláció a sorozatból rendering játék jelenetek, majd hozzon létre egy fix ciklust. E ciklus alatt fog futni fizikai szimuláció. Például, ha a játék célja, hogy működik a 60 képkocka másodpercenként, akkor állítsa be a fizikai szimulációt gyakoriságának a másodpercenként 60-szor. Ezt kell osztani a felelősséget lehetővé teszi számunkra, hogy megszüntesse egy csomó probléma.
Összefoglalva, azt akarom mondani, hogy ha egyszer már úgy döntött, hogy írjon egy fizikai motor - lelkiismeretes és csinálni. Ebben az első részben ezt a cikket véget ér. A következő részben fogunk beszélni a fizikai testek és azok tulajdonságait, valamint beszélve a tipikus korlátai fizikai motor.