Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
Jefo
Založen: 02. 07. 2011 Příspěvky: 58
|
Zaslal: 30. červenec 2013, 18:13:06 Předmět: Editor hry a zoom sceny (XNA) |
|
|
Ahoj,
tak sem pisem znovu. Robim si teraz editor hry. Rozhodol som sa tak ze som celu hru prepol do okna a po bokoch som si vytvoril este dalsie formulare kde som si nahadzal vsetky potrebne komponenty aby som ich nemusel programovat rucne v XNA. Teraz len programujem funkcionalitu. Potreboval by som spravit zoomovanie na scenu. Pouzivam "orthographics" projekciu teda vsetky objekty su rovnako velke bez ohladu na to ako su daleko od kamery. SpriteBatch triedu som nepouzil. Miesto toho som si nakreslil z dvoch fejsov obdlznik a nan som natiahol texturu. Potreboval by som teraz naprogramovat zoomovanie no neviem ako na to. Viem ze je na zvacsovanie a zmensovanie trieda "Matrix.CreateScale()" no neviem ze ako ju pouzit. Comu mam vlastne tu maticu priradit ? Pomoze mi prosim niekto s touto ulohou ? Dik |
|
Návrat nahoru |
|
|
Dlaha
Založen: 30. 07. 2007 Příspěvky: 598 Bydliště: Olomouc
|
Zaslal: 30. červenec 2013, 19:08:04 Předmět: |
|
|
Maticí, kterou ti vrátí metoda Matrix.CreateScale() vynásob world matrix.
Jinak to je dobrý nápad, s těma formulářema kolem XNA okna. Funguje to bez problémů, nenarazil jsi na žádné komplikace? _________________ Other Inside
Greenlitnuto! |
|
Návrat nahoru |
|
|
Jefo
Založen: 02. 07. 2011 Příspěvky: 58
|
Zaslal: 30. červenec 2013, 21:01:32 Předmět: |
|
|
Ok. uz mi to zoomovanie funguje. Zatial s tym nemam ziadne problemy.Celu hru mam ako jeden singleton. V nom mam vsetky objekty hry aj formulare.
Robim to tak ze si napriklad dam na formular label a napisem mu public metodu "NastavLabel(string text)". V nej mu uz len priradim text ked potrebujem vypisat napriklad FPS. Nastavujem to takto
kód: |
Game1.Instancia.Formular.NastavLabel(FPS.ToString());
|
Ked potrebujem vytvorit napriklad nepriatela tak si ho po stlaceni tlacitka vytvorim cez volanie konstruktoru a nastavim jeho parametre. nasledne ho pridam do sceny takto
kód: |
Game1.Instancia.DatabazaHernychObjektov.PridajObjekt(nepriatel);
|
Ked potrebujem pohnut svetom doprava tak mu napisem po stlaceni tlacitka
kód: |
Game1.Instancia.HernySvet.PosunDoprava(posun_o);
|
Vsetko ide zatial v pohode. Ja sa programovaniu zatial venujem iba vo volnom case a neni som ziaden guru. Snazim sa robit tak ze hlavne aby to islo a o nejaku extremnu strukturu programu sa nejak extra nestaram.
Vsetky objekty hry su uzko viazane na tento konkretny projekt a keby chcem nejaky objekt pouzit v nejakej odlisnej aplikacii tak by som ho musel celu triedu upravit na tu konkretnu aplikaciu lebo to mam dost zbesilo poprepajane.A este jedna vec. Ked som nastavoval projekciu musel som tam zadat rozlisenie obrazovky take ake je konecne vo fullscreene. nedaval som tam rozmery z GraphicsDevice.ViewPort.Width a Height lebo potom su objetky trosku na inych miestach ako by mali byt. ked tam nastavim to rozlisenie tak vsetko sedi a mozem sa zacat hrat s rozlozenim objektov na scene.vychadzam totis niekedy od suradnic stredu sceny. |
|
Návrat nahoru |
|
|
saarix
Založen: 09. 08. 2012 Příspěvky: 32
|
Zaslal: 31. červenec 2013, 06:36:15 Předmět: Objekty |
|
|
Dost pěkně udělané Tenhle styl objektů jsem v XNA jestě neviděl a vypadá to dost slibně. |
|
Návrat nahoru |
|
|
Dlaha
Založen: 30. 07. 2007 Příspěvky: 598 Bydliště: Olomouc
|
Zaslal: 31. červenec 2013, 07:36:38 Předmět: |
|
|
Je zvláštní, kolik lidí takhle používá singletony, je tady o tom už i diskuze: http://www.ceske-hry.cz/forum/viewtopic.php?t=3393
Když jsem ten návrhový vzor objevil, tak jsem z něj byl taky hrozně nadšen. Ale teď ho používám jen pro logování, nikde jinde mi velkou výhodu nepřinesl.
Tím rozhodně ale neříkám, že je tvoje řešení špatné.
Ten editor se mi ale vážně líbí, mi jsme si udělali normální formulářovou aplikaci a container pro XNA GraphicsDevice, který se na ní dá prdnout. Funguje to dobře, ale mrzí mě, že mě nenapadlo to co tebe, ušetřili bychom si nějakou práci.
Přesně jak říkáš, taky jsme si nechtěli psát GUI v XNA, navíc C# má i jako komponentu ObjectInspector, takže se dají hrozně snadno editovat vlastnosti jakéhokoliv herního objektu. _________________ Other Inside
Greenlitnuto! |
|
Návrat nahoru |
|
|
|