Egyszerű témának tűnhet, de sok buktatót rejt a megfelelő inputkezelés egy program fejlesztése során.



Hasonló dokumentumok
4. BEMENET EGYSÉGEK. 4. Bemenet egységek

Vektorgrafikus rajzeszközök

MUNKAERÕPIACI POZÍCIÓK GYÕR-MOSON-SOPRON ÉS SZABOLCS- SZATMÁR-BEREG MEGYÉKBEN

Cross platform játékmotor + szerkesztő Támogatott platformok

Nokia C Felhasználói kézikönyv

Üdvözöljük. Solid Edge kezdő lépések 2

MENÜ ÚTMUTATÓ. E-Animations Zrt.

Szövegszerkesztő programok: Jegyzettömb, WordPad, Microsoft Word

Minden jog fenntartva, beleértve bárminemű sokszorosítás, másolás és közlés jogát is.

2008. április, II. évfolyam 3. szám INTERJÚ HR CSEMEGÉK. belülrôl

Miért tanulod a nyelvtant?

Bosch Video Management System. Kezelési útmutató

Annak ellenére, hogy a számítógépes szövegszerkesztés az utóbbi 10 évben általánossá vált, az irodai papírfelhasználás

Nokia Felhasználói kézikönyv

Írta: Gömöry Kati. Ahhoz, hogy a hirdetésed magára vonja a figyelmet, legjobb, ha megszólítod a célcsoportodat. Ennek többféle módja van:

PHP5 Új generáció (2. rész)

Office Gyakori kérdések

TomTom Bridge Referencia útmutató

SM-T810. Felhasználói kézikönyv

3. gyakorlat. 1/7. oldal file: T:\Gyak-ArchiCAD19\EpInf3_gyak_19_doc\Gyak3_Ar.doc Utolsó módosítás: :57:26

Beviteli perifériák. b) vezérlőbillentyűk,

Felhasználási útmutató a. Dr. Hibbey oktatószoftver-családhoz

Használati útmutató TC 7.2. Cisco TelePresence Profile Series Codec C-series Quick Set C20 SX20 Quick Set MX200 MX300

Web:

Agresszív marketing?- II. rész. Elıszó. Kedves Vállalkozó!

Ausztriai és szlovákiai előkészületek, Victoria Regia Nemzetközi Virágkötészeti verseny

Felfedeztem egy nagyon érdekes és egyszerű internetes pénzkeresési módot, amihez nulla forint befektetés szükséges.

Szervlet-JSP együttműködés

libgdx alapú program létrehozása, kép importálása, mozgatása libgdx alapok Android játékfejlesztés Soós András

Nokia Felhasználói kézikönyv

Nokia E Felhasználói kézikönyv

Szoftver-ergonómiára vonatkozó szabvány, avagy ISO 9241

OBJEKTUMORIENTÁLT TERVEZÉS ESETTANULMÁNYOK. 2.1 A feladat

HomeManager - leírás. advix software solutions.

NÉV osztály. Praktikus beállítások: Oldalbeállítás: A4 (210x297 mm), álló elrendezés, első oldal eltérő

MUNKAANYAG. Angyal Krisztián. Szövegszerkesztés. A követelménymodul megnevezése: Korszerű munkaszervezés

Nokia X Felhasználói kézikönyv. 1. kiadás

Minden jog fenntartva, beleértve bárminemű sokszorosítás, másolás és közlés jogát is.

Felhasználói kézikönyv

Felhasználói kézikönyv

Az élet és az elme. Az élet és az elme. Tartalom. Megjegyzés

J. B. Weisz. Ép testben ép lélek

TANTÁL KFT. NLPC Gold nyelvoktató berendezés. kezelési utasítás

SMART Board 885ix interaktív táblarendszer

14 A PROJEKT HONLAPJA A létrehozott rendszer bemutatása

MÁOK Sm. Szervezete 7400 Kaposvár, Cseri major Utolsó frissítés: TÁVOKTATÁS. MS Excel táblába oszlop beszúrása

BBS-INFO Kiadó, 2016.

1. oldal, összesen: 29 oldal

TestLine - 9.A hardver Minta feladatsor

Intuos Pro magyar nyelvű használati útmutató

SZERVERTELEPÍTÉS ÉS AKTIVÁLÁS

Tételek törlése, lomtár kezelése a GroupWise-ban

Nógrádi PC Suli tanfolyami jegyzete! Kinyomtatni, másolni, sokszorosítani tilos! Kereskedelmi forgalomba nem hozható! TANFOLYAMI JEGYZET

Dell Latitude 12 robusztus táblaszámítógép 7202 Felhasználói kézikönyv

Bevezetés. MV szerelem 135x (6) press.indd 11


Entity Framework alapú adatbáziselérés

ARCHLine.XP Windows. Újdonságok. Felhasználói kézikönyv. ARCHLine.XP 2009 Újdonságok

Printed in Korea Code No.:GH A Hungarian. 04/2008. Rev World Wide Web

Bellon Balázs Önálló laboratórium beszámoló Témakiírás: Szövegbevitel agy-számítógép interfész segítségével Konzulens: Mészáros Tamás

2015. december: A meddőség kezelése a szociológus szemével - Vicsek Lilla

Kétdimenziós rajzolás WPF-ben

RC12 Air Mouse. Használati útmutató

AXEL PRO Számlázó és Készletnyilvántartó Program

A dokumentum lapméretének és a margóinak a beállítását a menüszalag Lap elrendezése lapján tehetjük meg. Külön állítjuk be a lapméretet.

A word első megnyitása


Belső Nóra: Utak egymáshoz (részlet) Beszélgessünk!

SM-G920F. Felhasználói kézikönyv

Felhasználói kézikönyv

HQ sorozatú hordozható mérőműszerek

Síklefedések Erdősné Németh Ágnes, Nagykanizsa

Húsz év mellékvágány után újra lendületben

KORÓDI SÁNDOR TITKOS GY.I.K!

Virtuális Egér. Horváth Zsolt, Schnádenberger Gábor, Varjas Viktor március 20.

Kezelési leírás a FEC01/06 típusú programozható és távműködtethető lángeffekt vezérlő készülékhez

Szövegalakítás. Elforgatott szövegek. A HULK felirat itt most a kép részét képezi, vagyis mindössze a felett e lév ő ké t sorr a kel koncentrálnunk.

Fontos biztonsági előírások

FELHASZNÁLÓI KÉZIKÖNYV

Verseny, rugalmasság, átjárhatóság BESZÉLGETÉS SZELÉNYI IVÁNNAL AZ AMERIKAI EGYETEMI VILÁGRÓL ÉS AZ EURÓPAI BOLOGNA-REFORMRÓL

adatbázisát? világméretű Hogyan használjuk a találmányok Európai Szabadalmi Hivatal Ingyenes hozzáférés

Korlátozott jogkörű felhasználói fiókok létrehozása és kezelése

MŰANYAGOK FELDOLGOZÁSA

Gyors üzembe helyezés és Els lépések HP Compaq üzleti asztali számítógépek d220-as és d230-as modell

NFS Shift. Magasabb fokozat

Felhasználói kézikönyv. funscreen EM73 Tablet

NEPTUN_FDL, META. (Szűrések, dokumentáció) Budapest, 2001

Suzuki Wagon R+ hátfali ajtózár hiba

Nokia X6 (Mail for Exchange) beállítása Virtualoso levelezésre

Erasmus beszámoló Tüske Éva Università degli Studi di Ferrara Ferrara Olaszország

FELHASZNÁLÓI KÉZIKÖNYV

Az európai időszemlélet változása és értelmezése

A Mi újság? unk Általános Iskola Hantos január

Felhasználói kézikönyv

FÉNYGYÓGYSZER. Védelem és gyógymód sugárszennyezés, idegméreg, bakteriális- és vírusfertőzés esetére

Utasítás az Epicentr program kezeléséhez

I. fejezet Hello Világ! Programozás tankönyv. II. Fejezet. Helló Világ! avagy a Miért?-ek elkezdődnek

kisebb helyre beférnek majd.

Első kérdéskör. Budapest Workshop 12 May 2016

Átírás:

INPUTKEZELÉS

INPUTKEZELÉS Egyszerű témának tűnhet, de sok buktatót rejt a megfelelő inputkezelés egy program fejlesztése során. Jelenleg 5 féle input eszközt különböztetünk meg, az xna első megjelenésekor pedig mindössze 2db-al kellett számolni. A következőkről van szó: billentyűzet egér gamepad touch multi touch Az leghagyományosabb inputkezeléshez, az XNA Keyboard osztályát fogjuk használni, ami a Microsoft.XNA.Framework.Input névtérben található meg. tipp: ha valami olyasmit írsz, ami nincs usingolva, de használni tudod, hogy benn van a frameworkben, a megfelelő szó után CTRL+. hatására magától beilleszti a Visual Studio a megfelelő usingot. A Keyboard osztály egy statikus methódusán (GetState) keresztül tudhatjuk meg a billentyűk állapotát. A GetState(),ahogy a neve is mutatja az eszköz aktuális állapotának lekérésére szolgál. Mivel ez egy bináris dolog, a két lehetséges eset a lenyomott illetve a felengedett billentyű. Pl. azt szeretnénk, hogy végrehajtódjon egy esemény egy billentyű lenyomására, a következőt tehetjük: if (Keyboard.GetState().IsKeyDown(Keys.A)) // és erre reagálunk valamit, pl kilépünk az alkalmazásunkból this.exit();

Tehát, ha igaz állapotot kaptunk vissza, azaz le volt nyomva az A billentyű a megfigyelés idejében, akkor végrehajtjuk az Exit()-et. Ehhez egy kis segítség: public void inputhandler() { KeyboardState keyboardstate = Keyboard.GetState(); } if (keyboardstate.iskeydown(keys.left)) ringsposition.x -= ringsspeed; if (keyboardstate.iskeydown(keys.right)) ringsposition.x += ringsspeed; if (keyboardstate.iskeydown(keys.up)) ringsposition.y -= ringsspeed; if (keyboardstate.iskeydown(keys.down)) ringsposition.y += ringsspeed; Ne felejtsük el meghívni amit írtunk. Anélkül nem fog menni

Egér: Az egér kezelése, nem túl meglepő módon még sokkal egyszerűbb mint a billentyűzetkezelés. Mivel a képernyőn kell mozognunk, ezért csak két koordinátánk lesz, ami ami a kurzor aktuális helyzetét mutatja. void SetPosition(int x, int y) Persze a fenti állítás egészen addig igaz, amíg arra vagyunk kíváncsiak, hogy hol is található épp az egér kurzor. Ha azt szeretnénk elérni, hogy valamire rá tudjunk kattintani, az már egy picit bonyolultabb feladat. Ezen kívül természetesen tudunk kattintani, tehát az egér gombjait is kezelnünk kell valamilyen formában.

Feladat: módosítsuk az előző kódunkat úgy, hogy az egérrel is irányítani tudjuk a spriteunkat. Egy kis segítség: MouseState mousestate = Mouse.GetState( ); if(mousestate.x!= prevmousestate.x mousestate.y!= prevmousestate.y) ringsposition = new Vector2(mouseState.X, mousestate.y); prevmousestate = mousestate;

Gamepad A GamePad egy kicsit összvér jószág, hiszen egyszerre digitális és anolog kontroller. A gombjai nyilván digitálisak, a stickek pedig anológ módon működnek, azaz több átmeneti fokozat is lehetséges a két végállapot között. Hogy a dolog még bonyolultabb legyen, a stickeket le is lehet nyomni.ekkor pont úgy működnek, mintha egy sima gombot nyomtunk volna le. Biztosan mindenki kitalálta, ha egér és billentyűzet kezelő osztály is volt már, akkor lesz egy a gamepadhoz is. Ha veszünk egy kontrollert a PC-hez, akkor nemcsak Xboxon, hanem rögtön a gépen is tesztelhetjük az irányítást. Persze enélkül is teljes az élet, de elég széles lehetőségeket nyit ki az ember előtt, ha még jobban tudja irányítani a játékokat.

Van még valami amit szem előtt kell tartania a kódolás során. Ez nem más mint a PlayerIndex. Egy játékkal egyszerre egy Xboxon 4ember játszhat, 4 kontrollerrel. Ezeket jelöljük sorba Player 1-4ig. Ha vezeték nélküli Xbox 360 kontrollerről van szó, akkor egy olyan Property-t is meg kell jegyeznünk, amivel alapból nem foglalkoznánk. Ez pedig az eszköz állapota, hogy csatlakoztatva van, vagy sem. Gondolunk kell arra is, mitörténik olyankor, ha lemerül az elem. Általában ez gyakran megtörténik játék közben,mert az emberek csak akkor cserélneke elemet, ha az már teljesen lemerült. Ilyenkor nem dobatjuk el az addig elért játékállást, hanem lehetőséget kell adni a játékos számára, hogy ismét vissza csatlakozzon a játszmába. Vegyünk egy egyszerű példát. A programunkban egy olyan sprite-ot akarunk mozgatni ami egy méhecskét szimulál. Szerencsére A gomb van az Xboxon is, ezért most is ezt fogjuk használni. Igaz, teljesen fapados megoldást választunk.

Megvizsgáljuk, hogy az A gombot lenyomták, vagy sem. Ha igen, akkor a méhecskénk hirtelen zümmögni kezd, a kontroller rezeg és 2szer olyan gyorsan halad tovább ha elengedjük, akkor kikapcsolódik a vibráció, és újra normál sebességgel fog repülni. Ez a méhecske nitro. GamePadState gamepadstate = GamePad.GetState(PlayerIndex.One); if (gamepadstate.buttons.a == ButtonState.Pressed) { beeposition.x += beespeed * 2 * gamepadstate.thumbsticks.left.x; beeposition.y -= ringsspeed * 2 * gamepadstate.thumbsticks.left.y; GamePad.SetVibration(PlayerIndex.One, 1f, 1f); } else { beeposition.x += ringsspeed * gamepadstate.thumbsticks.left.x; beeposition.y -= ringsspeed * gamepadstate.thumbsticks.left.y; GamePad.SetVibration(PlayerIndex.One, 0, 0); }

TouchPad A sima Zune, az egy keményebb tészta, ugyanis két lehetőségünk van. Egy nehezebb, és egy könnyebb.a könnyebb lehetőség, hogy a touchpadot hagyományos gombként használjuk, ekkor ugyan úgy viselkedik mintha a GamePadot használnánk. A másik lehetőség, ami játékélmény szempontjából sokkal előnyösebb, ha TouchPadként használjuk. Ebben az esetben persze sokkal több problémát kell megoldanunk, és rengeteg állapotot kell kezelnünk. Ez sem túl bonyolult,de azért ahoz képest, amilyen egyszerű volt mondjuk a billentyűzetet vagy az egeret használni, sokkal nagyobb probléma.. Érdemes lehetőséget hagyni a játékosok az

Zune HD Touch Screen Azért, hogy az életünk még könnyebb legyen kedvenc kézi konzolunkból már két féle verzió is kapható. Persze nem itthon, hanem amerikában.

Jogi megjegyzések: Jelen XNA írásra, és ennek a sorozatnak a többi részére a Creative Commons-licencek vonatkoznak. A lényeg, hogy szabadon másolhatod, terjesztheted, az szerző nevének feltűntetésével. A szerző engedélye nélkül, anyagi haszonszerzés céljára semmilyen formában nem használható. Azaz, pl. nem tarthatsz belőle fizetős tanfolyamot, nem adhatsz ki ez alapján könyvet(kivéve ha ingyenes könyv), illetve semmilyen más módon nem használhatod fel anyagi hasznon szerzés céljából. Fontos megjegyzés: a leírások és a tutorialok folyamatosan bővülnek, illetve a hibákat folyamatosan javítom ha találok egyet. A legfrissebb verziót a devportal.hu/xna oldalon találod.