kennethi Skrevet 24. april 2009 Del Skrevet 24. april 2009 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
GeirGrusom Skrevet 24. april 2009 Del Skrevet 24. april 2009 Ofte brukes DirectInput da denne støtter joysstick og mus også, men ellers kan du bruker GetAsyncKeyState som er enkel i bruk og kjapp respons. Lenke til kommentar
kennethi Skrevet 24. april 2009 Forfatter Del Skrevet 24. april 2009 (endret) 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å Endret 24. april 2009 av kennethi Lenke til kommentar
GeirGrusom Skrevet 24. april 2009 Del Skrevet 24. april 2009 (endret) if(GetAsyncKeyState(VK_SPACE) >> 31) Mario.Jump(); if(GetAsyncKeyState(VK_LEFT) >> 31) Mario.Walk(LEFT); Endret 24. april 2009 av GeirGrusom Lenke til kommentar
kennethi Skrevet 24. april 2009 Forfatter Del Skrevet 24. april 2009 (endret) 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 25. april 2009 av kennethi Lenke til kommentar
GeirGrusom Skrevet 28. april 2009 Del Skrevet 28. april 2009 (endret) 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 ) 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 28. april 2009 av GeirGrusom Lenke til kommentar
kennethi Skrevet 29. april 2009 Forfatter Del Skrevet 29. april 2009 (endret) 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 29. april 2009 av kennethi Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå