6. fejezet - létrehozása saját mozgást vezérlő

Ami a saját mozgást vezérlő

Mozgó tárgyak és a repülő - ez biztosan jó, de mi van, ha szüksége van valami más? Lássuk, hogyan lehet létrehozni egy mozgást vezérlő egy érdekes objektum - Space Tank Mark VII Doppler radar X-band. A tartály lehet mozgatni a bolygó felszínén a különböző sebességű és bekapcsolása a mozgásban. Tornyát forog gyorsan, és a fegyver emelt. Azt hiszem, elfelejtettem említeni a radar, amely boldogan lóg a torony? Ábra. 6.11 Mark VII mutat tank harci küldetés.


6. fejezet - létrehozása saját mozgást vezérlő

Ábra. 6.11. Tér tartály Mark VII Doppler radar X-band

Hmm. Lehet, hogy észrevette, hogy a tartály nem kerék? Tudok ajánlani két magyarázat:

Ez egy repülő tank.

Túl lusta voltam, hogy zavarom kerekekkel.

Ábra. 6.12 ábra egy diagram a mozgatható részek a tartály (kerekek). Az illusztráció a színes lapot.


6. fejezet - létrehozása saját mozgást vezérlő

Ábra. 6.12. Összetevői tartály

Melléklet Tank C3dTank osztály származik C3dFrame. A sorrend, amelyben a tartály a következőképpen van felépítve: első, tulajdonítunk a ház a külső keret, majd csatolja, hogy a test a torony és a végső fokon, és csatolja a fegyvert, hogy a radar torony. Radar is állandó forgatás. A fegyver mehet fel és le, forgó vízszintes tengely körül. A torony forgatható egy függőleges tengely körül a ház.

Mielőtt részletesen foglalkozunk a vezérlő, nézzük meg egy darab kódot, amely létrehoz egy tank, hogy segítsen nekünk, hogy kezelni:

Az egyetlen dolog, hogy furcsának tűnhet - ez az, amit használni radar külön keretben. Meg kellett megtenni, mert az a tény, hogy az y tengelyen a radar az eredeti változata a tartály teljesen eltolódott az a hely, ahol akartam, hogy tegyen egy radar. Ezért beállított felső keret a ponton a koordinátáit a torony, ahol a tengely van elhelyezve, és a tárgy-eltolódott radar a kereten belül, úgy, hogy a fenti a forgástengely (ábra. 6.13).


6. fejezet - létrehozása saját mozgást vezérlő

Ábra. 6.13. Radar elhelyezése egy keretben

Minden objektumok alkotják a tank, jöttek létre a 3D Studio és átalakítható formában .X segítségével conv3ds segédprogramot. tartalmazza a DirectX SDK 2. Ezeket tartalmazza RC2 alkalmazás Fájl forrása:

Tag XOF. előforduló erőforrás fájl, sőt, lehet helyettesíteni bármilyen más húr. Azért választottam XOF csak azért, mert ez a kiterjesztés leírásában alkalmazott fájlokat számok. Az egyetlen hely, program, amely megfelel XOF vonal - funkció C3dShape :: Load. ahol ez a vonal megkülönböztetésére használják XOF-fájlok más típusú források.

A tank osztály három funkciója van a 3dTank.cpp fájlt, és célja, hogy ellenőrizzék a torony sarkok és fegyvereket, valamint a fényképezés:

Amint láthatjuk, hogy meghatározza a helyzetét a torony és ágyú, kiszámítjuk az irányvektor. Aztán az irányt a tárgy képest a szülő; Mellesleg, csak így SetDirection funkció alapértelmezés szerint. De azt akartam, hogy a kód egyszerű és világos, így minden hívás át egy további érv - a referencia képkocka.

Tank kész. Továbbra is megtanulják, hogyan kell kezelni őket.

tartály vezérlő

A legtöbb vezérlő kód van egy osztály C3dWnd és C3dController. A saját vezérlő, de meg kell adni egy új osztályát származó C3dController. OnUpdate felülírja a funkciót és az új kontroller az alkalmazásban. Mielőtt azonban levelet funkciót OnUpdate. kell terjeszteni a joystick beállításait funkciót töltenek be. A konfiguráció, amelyben laktam, táblázatban mutatjuk be a 6.3.

6.3 táblázat. tartály menedzsment

Úgy döntött, hogy az x és r lehetőségek fordult, hogy még a legegyszerűbb két tengely joystick tudnál vezetni egy tank. Azért választottam a SideWinder joystick Pro alkalmazás - ez ad egy reálisabb érzem, mint SpaceBall. Ezen túlmenően, a kiválasztó gombot típus található a kilincset a joystick, tökéletes a torony fordul.

Azzal a szándékkal, hogy a meghajtó, akkor írj egy programot. A teljes kódot a vezérlő két funkciója van:

A kivitelező csak inicializálja néhány helyi adat; minden valódi munka folyik az OnUpdate funkciót. Y paraméter határozza meg az aktuális sebességet. A jelenlegi helyzetét és irányát a tartály tárolja C3dVector tárgyakat. R és X paraméterei határozzák meg a forgatás mátrix, amely meghatározza egy új tájolási vektor irányát. Az irány vektort megszorozzuk a sebessége - a kapott elmozdulás vektort adunk a helyvektora az előző tartály. Aztán mozgatni a tartály egy új helyzetbe, és kérjen egy új irány a tank.

típus kiválasztása gomb határozza meg az irányt a torony. Mi ellenőrizze az állapotát 3 és 4 gombot, és ha megnyomja, az emelési szög a pisztoly változtatjuk egy kis összeget. Ha Ön rendelkezik egy ilyen gomb megnyomásakor a fegyver csövét lassan emelkedik vagy csökken.

Csak akkor tudjuk figyelembe venni a tűz gombot. Ellenőrizze a helyi változó m_bWasFire megakadályozza újbóli felvételt, amikor a gomb lenyomása - automata fegyverek az Egyesült Államokban tilos.

Végszerelés alkalmazások

Tank alapjául alkalmazására került mozgatása az alkalmazás kódját. Töröltem a kívánt menü parancsokat, és cserélje ki a jelenlegi adat objektum C3dTank. Ezen kívül, már benne van az elrendezés a háttérkép. Az alábbi kódrészlet, ami van hangolva az alkalmazás főablakában:

NewScene függvény létrehoz elrendezés és meghatározza a kezdeti feltételeket:

Ha a tartály elhagyja a szélét az ablak, és veszít, akkor válassza a Fájl&mnsp;| Új. okoznak NewScene funkciót, és kezdje újra. Bal mondani a legutóbbi módosítások én - amikor a szabályozó kér egy mutatót a keret, amellyel meg kell dolgozni, OnGetCtrlFrame függvény visszaad egy pointert azt a tartály:

Felhívjuk figyelmét - bár a funkciót kell visszatérnie egy pointert C3dFrame. ez valójában átmegy a mutatót az objektum C3dTank. Használjuk ezt a tényt OnUpdate funkciót. kódot, amelyet a fent hivatkozott. Ha már korábban is gondolta volna, hogy az átalakítás egy pointert C3dFrame be C3dTank mutató néz kétséges, de most ez könnyen azt biztosítja, hogy minden joga megvolt erre.

Kapcsolódó cikkek