Gå til innhold

2d keyboard input standar


Anbefalte innlegg

Hei!

 

Driver mye med 2d spill programmering i win32, med opengl som grafikk bibliotek.

 

Har prøvd opengl sin keyboard input og win32 med winproc input, men begge er forholdsvis trege og klarer ikke å registrere flere taster på engang (Det jeg har erfart iallefall).

 

Så det jeg lurer på er, hva er standarene innen keyboard input i spill industrien?

Hvilken metode er raskes og takler flere taster på engang, foreks. spill som Counter-strike og Battlefield har mulighet til.

 

Takker for svar.

Kenneth Isaksen

Lenke til kommentar
Videoannonse
Annonse

Hei og takk for respons.

 

Har fått med meg at Directinput er populært, men så er dette integrert i DirectX bibloteket.

Bruker for øyeblikket GetAsyncKeyState , men den klarer rett og slett ikke jobben. både treg og tilleg registrerer den bare en tast. Så fort man legger til en ekstra sjekk mot en variabel så blir den ubrukelig.

 

Så kan det hende jeg bruker GetAsyncKeyState feil, men prøvd både med switch og if statments.

 

Eksempler på problemer jeg støtter på i denne fasen er, holder inne en tast for å bevege til høyre / venstre, så fort space blir trykt for å hoppe, stopper bevegelsen til sidene og man må på nytt trykke pil tastene.

Er ikke akkurat mario bevegligheten helt ennå :p

Endret av kennethi
Lenke til kommentar
if(GetAsyncKeyState(VK_SPACE) >> 31)
 Mario.Jump();
if(GetAsyncKeyState(VK_LEFT) >> 31)
 Mario.Walk(LEFT);

Godt forslag men det har jeg prøvd, og det fungerer dessverre ikke, fortsatt samme problem med at man må trykke piltasten på nytt etter hoppet.

Endret av kennethi
Lenke til kommentar
If the function succeeds, the return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down. If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState. However, you should not rely on this last behavior; for more information, see the Remarks.

 

Utenom det, har du direkte kontroll over tastaturet, men det krever litt mer arbeid å bruke, og er kun tilgjengelig fra XP og utover (hvis det er et problem i dag :p)

 

Dessverre er jeg såpass glemsk at jeg ikke husker hva dette API-et heter...

 

Men jeg har brukt GetAsyncKeyState masse uten å hatt noen problemer med det.

Endret av GeirGrusom
Lenke til kommentar

Eksprimenterte litt og byttet litt på koden. Det ser ut til å fungere etter første hoppet er gjort, for så å holde den inne og bevege seg fram og tilbake.

 

Men første hoppet stopper fortsatt bevegelsene til siden, akkurat som den stenger alle andre taster av sekundet den blir trykket, for så å åpne mulighetene igjen for nye taste trykk. Merk at hoppe knappen er space og bevegelse knappene er piltastene.

 

Synes det er så snodig at det fungerer etter det første hoppet er gjort, hvis jeg fortsetter å holde hoppe knappen inne, men ikke før ?Akkurat som om tastaturet sovner når den trykker inn en ny knapp.

 

Beklager hvis beskrivelsene min er litt tamme og utydlige.

 

(sender gjerne source code, eller ferdig compiled så du kan se det selv)

Endret av kennethi
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...