Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 28. září 2009, 14:34:44 Předmět: DirectInput nebo vlastní |
|
|
Píšu v C# / SlimDX a zajímalo by mě, jestli mám na vstup z klávesnice použít DirectInput nebo si napsat vlastní "RawInput" ...
Ovládání je oddělené od palikace (je ve tříde Controls) a ven jsdou pouze metody IsKeyPressed(char key) apod., takze jde vicemene jen o prepsani jedne tridy.
Co je lepší použít. Na několika forech jsem cetl, ze je to jedno, jinde zase ze DirectInput a jinde vlastní RawInput.  |
|
Návrat nahoru |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 28. září 2009, 15:18:27 Předmět: |
|
|
Použij, co chceš. Všechno má svoje výhody a nevýhody. DirectInput nezohledňuje nastavení z ovládacích panelů, takže bych se mu vyhnul. Jinak je to jedno. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 28. září 2009, 16:42:13 Předmět: |
|
|
Ok.. a nejde nejak vyresit elegantne tohle ?
kód: |
public bool IsKeyPressed(char key)
{
Input.KeyboardState keys = this.keyboard.GetCurrentState();
if ((keys.IsPressed(Input.Key.W))&& (key == 'w')) //<---- ??
{
return true;
}
....} |
Abych nemusel na vsechny klavesy takhle vypisovat ify ?
Chtel jsem tu obalovou tridu co nejuniverzalnejsi a nejvic oddelenou od zbytku, jak jsem psal, aby se dala lehce vymenit |
|
Návrat nahoru |
|
 |
Quiark

Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 28. září 2009, 16:53:47 Předmět: |
|
|
No potřebuješ převést písmenko na ten Input.Key.W žejo. Pokud ta knihovna žádnou takovou funkci nemá, uděláš si tabulku, v ní to najdeš a je to.
kód: |
class Conversion {
public char c;
public Key k; // nebo co je to za typ...
public Conversion(char _c, Key _k) { blabla }
};
Conversion[] tabulka = new Conversion[] {
new Conversion('w', Input.Key.W),
new Conversion('a', Input.Key.A),
...
};
|
syntaxi polí v c# nebo v jave nepamatuju, oprav si to za domácí úkol, stejně jako doplnit konstruktor od Conversion
Jinak my jsme ve hře používali DirectInput a bez problémů. Samozřejmě pokud se ve hře bude někde něco psát, je hezčí, když to respektuje místní nastavení a na to už je záhodno použít pomoc od windows. _________________ Mám strach |
|
Návrat nahoru |
|
 |
perry

Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 28. září 2009, 17:36:10 Předmět: |
|
|
Díky... jinak psát se bude minmálně (max. nějaký nastavení do konzole). Jinak klasika W,S,A,D (sipky), mezerník, Shift a to je pro začátek vše  |
|
Návrat nahoru |
|
 |
Al
Založen: 23. 10. 2007 Příspěvky: 196
|
Zaslal: 5. listopad 2009, 03:26:18 Předmět: |
|
|
DirectInput je dobrý na to, že když má někdo jiné rozložení klávesnice, tak se to neovládá těmi WSAD, které ten chudák má rozházené jinde, ale pořád těmi stejnými klávesami.
Nicméně zrovna tyhle klávesy jde snímat i přes funkce Windows úplně v pohodě, horší je asi jen nějaké rozlišování levých a pravých shiftů, enteru na hlavní či numercké klávesnici nebo jánevímco pátého tlačítka u myši... Rozhodně ale ty funkce, co tam něco vyvádějí s charem v dotnetu, jsou úplně vedle jak ta jedle. Char je znak v abecedě, hodí se proprogramy typu Microsoft Word apod. Pro hry má char či spíše string smysl jen u volby kláves, kde se uživateli zobrazí název klávesy, jakou mačká. Jinak pracujeme s kódy kláves, ne se znaky, které na těch klávesách jsou.
Mimochodem jiné rozložení kláves má třeba Francie, tam není W jako na naší klávesnici, takže by ty WSAD "šipky" moc nešipkovaly.  |
|
Návrat nahoru |
|
 |
|