XNA hírek órák () - Article 2d-grafika XNA Game Studio 2

2D-grafika XNA Game Studio 2.0 / 3.0


Ebben a laborban, figyelembe vesszük a koordináta-rendszer, amely létrehozásához használt kétdimenziós játék, beszélni a visszavonását kétdimenziós képek XNA, úgy kompozitkezelési kérdések, amelyben a játék képernyőjén méretben és munka ablakos és a teljes képernyős mód.







koordináta


A fejlesztés a kétdimenziós játékok használata kétdimenziós koordináta-rendszerben. Ábra. 2.1. láthatjuk a normál koordináta-rendszer és a tárgy látható a rendszerben.

XNA hírek órák () - Article 2d-grafika XNA Game Studio 2

Ábra. 2.1. A hagyományos koordináta rendszerben

Ebben a koordinátarendszerben, a származási található a bal alsó sarokban a rendszer - ez itt, hogy van egy pont, 0.0. Koordináták az X tengely körül csökken balról jobbra, az Y tengely - felfelé.

A fejlesztés a számítógépes játékok segítségével a képernyő koordináta rendszerben. A fő különbség a rendszer a hagyományos, hogy a származási található a bal felső sarokban. A koordinátáit az X-tengely növekedést balról jobbra, de az Y-tengely fordított - a koordinátái növelje a tetejétől az aljáig. Ábra. 2.2. láthatjuk a koordináta-rendszerben, ami festett azonos háromszög.

XNA hírek órák () - Article 2d-grafika XNA Game Studio 2

Ábra. 2.2. Képernyő koordinátarendszer

A határokat a képernyő koordináta-rendszer - az vagy a határ a játéktér az ablak - az ablak módban, vagy - ha a képernyő felbontása képernyős módban. Például, ha ablakos módban, van egy ablak mérete megegyezik 800x600 képpont, akkor ezek a határok a koordináta-rendszer.

Hozzon létre egy új szabvány játék projekt nevű P2_1. A panel Solution Explorer scholknem Kattintson a jobb gombbal a tartalom mappát és a helyi menüből válassza ki az Add (Létező tétel. A Windows alapértelmezett ablak dolgozó fájlokat. Találunk segítségével egy grafikus fájlt, és adja hozzá a projekthez. Ennek eredményeként a panel Solution Explorer kell kinéznie ábrán látható. 2.4.

XNA hírek órák () - Article 2d-grafika XNA Game Studio 2

Ábra. 2.4. Kép hozzá a projekt

Listing 2.1. Változók munkát kép


Kezdje () metódus az objektum spriteBatch előkészíti a grafikus eszköz, hogy a kimenő képet. Módszer Draw azonos tárgyat vesz, mint a paraméter egy változó típusát Texture2D (MySprite) típusú változó Vector2 (pozíció) és a szín, ahol a színárnyalat a kép megváltozik. Ebben az esetben a fehér szín - ez azt jelenti, hogy a színek a kép változatlan marad. End () metódus befejezi a visszavonási eljárás - a kép a képernyőn.

Rajzolj egy alap osztály módszer ebben az esetben nem használható kimeneti kép. Nézzük meg a szerepe a kimeneti kép alább.

A program elindítása után, akkor kap egy képet (2.5 ábra). .:

XNA hírek órák () - Article 2d-grafika XNA Game Studio 2

Ábra. 2.5. A kép megjelenik a játék képernyőn

Tekintsük a megközelítés, amely leegyszerűsíti a megközelítés, hogy a levezetése képek a fent leírt módszerrel.

Fejlesztési osztály tárolására grafikus információk


Hozzon létre egy új szabvány nevű projekt P2_2. Hozzá projekt a kép, hogy mi a fent létrehozott (P2_1.png).

Most gondolj, hogy mit kell az osztály, hogy képviselje a játék célja. Most szükségünk van egy osztály objektum, amely képes tárolni egy textúra sprite és információk a helyzetben a képernyőn. Ez a lista bővíthető, ha szükséges - és - mindkét ingatlan - és módszereket. De egy ilyen projekt, fogunk dolgozni az alábbi ülés. Mégis mi csupán két fent említett tulajdonságokkal rendelkezik.

Scholknem ikon P2_2 projekt a Solution Explorer ablaktábla, és válassza ki a felugró menüpont hozzáadása (Class. Látni fogja, egy párbeszédablak, hogy egy új elem, amelyben egy üres osztályt (ábra. 2.6. Pont) Minta lesz kijelölve.

XNA hírek órák () - Article 2d-grafika XNA Game Studio 2

Ábra. 2.6. Adunk hozzá egy új osztályt, hogy a projekt

Adjuk meg a nevét az új osztály - legyen spriteClass, és kattintson a Hozzáadás gombra. A projekt egy új üres osztályt. Itt van a projekt, elvégre ezek a tevékenységek (ábra. 2.7.).

XNA hírek órák () - Article 2d-grafika XNA Game Studio 2

Ábra. 2.7. Megjelenése a projekt ablakot, hogy egy új osztály

Mi módosítsa az osztály spriteClass kódot a következőképpen.

Második - hozza létre a szükséges tulajdonságokat az osztály.

Harmadik -, hogy építsenek egy osztály konstruktor, amely inicializálja ezeket a tulajdonságokat.

Itt van, hogy az osztály kódját néz ki, miután az összes módosítást (lásd lista 2.4.):

Fent már néztem a kimenete a téglalap alakú kép, amely elfoglalta az egész terület a képfájlt. Nem igényel semmilyen további beállítást hogy megjelenjen a kép. A gyakorlatban nem nagyon kényelmes a használata több külön fájlokban tárolja a képet. Ráadásul nem minden a kép - egy téglalap. Itt kell először - fejlettebb, mint a festék, a rajzeszköz, másrészt - némileg eltérő módszert a képek megjelenítésére. Korábban jeleníti meg a képet, amire szükségünk textúra és a kép koordináta a játék ablakban. Most azonban szükség van a koordinátákat a helyzetben a kívánt képet nekünk a grafikus fájlt.

XNA hírek órák () - Article 2d-grafika XNA Game Studio 2







Ábra. 2.8. Készítsen egy képet az Adobe Photoshop

Itt van három kép - a képeket a következő tanulságok hasznosak lesznek számunkra, hogy hozzon létre saját változata a klasszikus játék pong.

XNA hírek órák () - Article 2d-grafika XNA Game Studio 2

Ábra. 2.9. Mi határozza meg a koordinátákat a Sprite grafikus fájlt

Hasonlóképpen, megkapjuk a koordinátákat a jobb alsó sarokban a kép. Ebben az esetben - (35, 97). A jövőbeni munka, ismernünk kell a koordinátákat a bal felső pontja a befoglaló doboz Sprite, valamint - a szélesség és a magasság. Ebben az esetben, a szélessége 17 képpont (35- 18), a magasság - 88 pixel (97 - 9). Ennek eredményeként megkapjuk az alábbi paraméterek egy téglalap, amely megállapította a sprite:

  • X18
  • Y: 9
  • Szélesség: 17
  • Magasság: 88

Az alábbiakban az adatokra van szükség.

Most betölteni a képet a projekt, és továbbra is működni fog. Ahogy emlékszem, a fent már létrehozott egy játékot alkatrész sablon, amely alkalmas a kijelzőn. Most módosítani a sablont. Listing 2.8. láthatjuk a módosított kódját a játék alkatrész

Listing 2.8. Módosított kód a játék alkatrész


Tekintsük a változás történt a komponens.

Felvettük a három változó - sprTexture, sprRectangle, sprPosition - tárolási struktúra téglalap mutatja a koordinátákat a sprite a textúra, és a helyzet a kimenet a sprite a képernyőn.

Következő lépésként a módosított osztály konstruktora, hozzátéve, hogy a listát a továbbított változók a következő paraméterekkel:

  • ref Texture2D newTexture - gear textúra. A paraméter átadása hivatkozás, vagyis az objektum nem kap egy példányt a textúra, és az egyetlen utalás - takarít meg a rendszer erőforrásait.
  • Téglalap newRectangle - egy téglalap, amely meghatározza a koordinátákat a sprite a képben.
  • Vector2 newPosition - sprite álláspontja a játék képernyőjén.

A test egy kivitelező, akkor inicializálni a megfelelő tulajdonságait az osztály átadott paraméterek.

Továbbá, mi véglegesítése kód Draw módszer. Itt mi lesz a legnehezebb része a módosítást. Az ügy a játék, amelyhez létre egy komponens, már minden eszközt a képek megjelenítése. Ezért a legésszerűbb használni a már meglévő SpriteBatch típusú objektumot annak érdekében, hogy használni, hogy megjelenjen a kép a képernyőn. Annak érdekében, hogy a már kialakult SpriteBatch rendelkezésre minden eleme a játék, van egy speciális technikával. Van olyan dolog, mint szerencsejáték-szolgáltatások állnak rendelkezésre, hogy az összes alkatrészt. Először is, adjuk hozzá a létrehozott objektum az osztály Game1 SpriteBatch típusát a listában szerencsejáték szolgáltatás (I megbeszéljük később), és így képes lesz letölteni a tárgy a játékban alkatrészeket. Mi nem csak, hogy - az alábbi parancs létrehoz egy új objektumot sprBatch, amely utalást tartalmaz az eredeti objektumot írja SpriteBatch, aki korábban Game1 osztály felkerül a listára a játék források.

SpriteBatch sprBatch = (SpriteBatch) Game.Services.GetService (typeof (SpriteBatch));

sprBatch.Draw (sprTexture, sprPosition, sprRectangle, Color.White);

Vettünk ki a szellemet a képernyőn, először hívja a módszer Begin () SpriteBatch objektum típusát, majd - az úgynevezett Draw () metódus, majd - egy eljárás End (), a végső következtetést. Itt nem hívja ezeket a módszereket. Az a tény, hogy ezek a módszerek kerülnek meghívásra az eljárás Draw (), ami a fő játék (Game1 típusú objektum). Az osztály kódot Game1 némi változás, ami most úgy. Listing 2.9. láthatjuk a kódot.

Listing 2.9. Class Code Game1

Kezdeni, van hozzá új változókat, amelyek közül az egyik (spriteComp típus) tárolására használt class spriteComp tárgy, és a második (mint egy Texture2D) tárolására használt textúrák. Mivel a struktúra tartalmaz több sprite, változó Texture2D kell létrehoznunk több objektumot, így van értelme, hogy hozza létre ezt a változó egyszer betölteni a képet, és élvezze azt.

A módszer LoadContent (), a szokásos módon, hozzon létre egy objektum, például a SpriteBatch, és, a segítségével a csapat Services.AddService (typeof (SpriteBatch), spriteBatch); SpriteBatch objektum hozzáadása a listához játék szolgáltatásokat. Azt követően spriteBatch csapat lehet nevezni a játékelemek, és megjeleníti a képeket.

Továbbá, ez a módszer, akkor töltse be a textúra kép textúra és változó CreateNewObject metódushívással ();. Ez a módszer hoztunk létre saját - arra használjuk, hogy hozzon létre gameObject objektumot.

gameObject = új spriteComp (e, Ref textúra, új téglalap (18,9,17,88), új Vector2 (100.150));

Létrehozásakor az objektumot, átadjuk az osztály konstruktora spriteComp tárgy a játék (ez), utalva a textúra, a téglalap objektum - figyelmét, hogy létrehozunk egy új objektumot a téglalap, amely inicializálja az értékeket a koordinátáit a kívánt textúra a sprite fájl, a korábban számított. Ahogy telt a kivitelező új objektum típus Vector2, amely tartalmazza a koordinátákat a sprite, hogy megjelenjen a játék képernyőjén.

A módszer CreateNewObject () tesszük egy másik csapat - Components.Add (gameObject). Segítségével ehhez hozzátesszük, hogy a lista játékelemek újonnan létrehozott objektumot. Ez egy nagyon fontos parancs - neki köszönhetően a teljesítményt a csapat base.Draw (gametime); Draw módszer fog feldolgozni a szerencsejáték-komponens, és a képeket, hogy megjelenik, jelennek meg.

A módszer Draw () osztály Game1 használjuk a következő kódot:

spriteBatch.Begin () parancsot; előállítására képe ustroytstvo a kimeneti kép, akkor a kimenő képet végezzük - a hívás base.Draw (gametime) feldolgozott játékelemek megfelelő módszereket örökölt DrawableGameComponent. Emlékszem, hogy a módszer Draw () spriteComp a komponens csak egy eljárás hívás Draw () a SpriteBatch osztály objektum, nincs hívás Begin () és az End (). Ennek eredményeként, miután a komponens megjeleníti a képet a tárgy O befejezi spriteBatch End () parancsot a módszer Draw () osztály Game1 és a kép jelenik meg a képernyőn.

Ez a működési mechanizmus lehetővé teszi, hogy a különböző alkatrészek, add, hogy a lista elemei a játék, és nem kell aggódnia a kiadási mindegyikük a módszer Draw (Game1 osztály). Miután a komponenst hozzáadjuk a listát játékelemek, arra a következtetésre jutott a grafikus ábrázolás automatikus. Azt mondhatjuk, hogy base.Draw (gametime) módszerrel; „Vizsgálatok” minden regisztrált alkatrészek és megjeleníti azokat a képernyőn.

Ez a megközelítés a leghasznosabb a fejlesztés igazi játék.

Itt látható a játék képernyőjén kivonulása után az ő képét (2.10 ábra)..

XNA hírek órák () - Article 2d-grafika XNA Game Studio 2

Ábra. 2.10. A játék képernyő után a komponens kimenet

Itt megvizsgáltuk a különböző megközelítések arra a következtetésre képeket. Ugyanakkor látható, hogy a kimeneti kép, amely kapcsolatban van a tárgy a játék - ez csak egyik feladata, hogy meg kell oldani a fejlesztés a játék. Egyéb feladatok - például - a tárgy mozog, ellenőrizze, összeütközött más tárgyak, ha az objektum - ugyanaz lehet oldani segítségével a különböző megközelítéseket. Látható, hogy a legbonyolultabb végrehajtás szempontjából megközelítés - a fejlesztés egy különálló játék komponens mind a legkényelmesebb, hogy hajtsák végre a különböző funkciók játék objektumot. Később, módosítja a működését szerencsejáték létesítmények fogjuk használni, hogy pontosan ezt a megközelítést.

Tekintsük a kimenet több képet a játék képernyőjén. Mint már mondottuk, a regisztrált játékelemek örökölt DrawableGameComponent megkötött automatizált. Ez azonban nem jelenti azt, hogy nem kell használni egyszerűbb módszereket visszavonását.

Vegyük például a következtetést a háttérképet egy meglévő projektet P2_3. Hoztunk létre egy képet, amelyek segítségével létrehozhatja saját verzióját a Pong játék. Hasonlóképpen, hozzon létre egy képet, amely szolgál majd a hátteret a játékot. Normál játék képernyő felbontása 800x600 pixel. Fogunk készíteni egy képet ekkora (nevezzük background.png), töltse be a projektbe. Ehhez egy új változót, hogy az osztály

Ezt követően, LoadContent () módszer, a kép feltöltési utasítás változót

Most megjelenik egy kép segítségével Draw () metódus az objektum spriteBatch.

spriteBatch.Draw (backTexture, új téglalap (0, 0, 800, 600), Color.White);

Tedd ezt a parancsot a hívások között Begin () és az End () parancsot, mielőtt base.Draw (gametime);
Ennek eredményeként, a játék ablak fog szerezni az ilyen típusú (ábra. 2.11.).

XNA hírek órák () - Article 2d-grafika XNA Game Studio 2

Ábra. 2.11. Output ablakban játék hozzáadása után a háttérben

Mint látható, a szellem a játék célja felett jelenik meg a háttérképet.

Megjegyzés
  • Megközelítés megkövetelése elsőbbségi kimeneti kép beállítására keverési nem túl kényelmes. Azonban XNA Framework speciális eszközök beállítására kölcsönös elrendezése a tárgyak. Különösen a levezetése a kobold megadhatja „mélység» (mélység), ahol ez található.

kérdések