Hi!
Habe mein Prog auf GetAsyncKeyState(); umgeschrieben, ich dachte damit kann ich mehrere Tastendrücke auf einmal entgegennehmen.
Drei nimmt er jedoch immernoch nicht an. folgenden Code habe ich dafür:
Code:
if GetAsyncKeyState(VK_UP)=0then
taste.vor:=Falseelse taste.vor:=True;
if GetAsyncKeyState(VK_DOWN)=0then
taste.hinter:=Falseelse taste.hinter:=True;
if GetAsyncKeyState(VK_RIGHT)=0then
taste.rechts:=Falseelse taste.rechts:=True;
if GetAsyncKeyState(VK_LEFT)=0then
taste.links:=Falseelse taste.links:=True;
if GetAsyncKeyState(32)=0then
taste.brake:=Falseelse taste.brake:=True;
Dachte wenn ich das in der Schleife laufen lasse, halt in meinen Rendercode schreibe kann ich alle Tasten entgegennehmen... dies ist leider garnicht so :-/
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Das ist eine Hardwarebeschränkung. Vor allem billige Tastaturen haben machen mehrere gleichzeitig gedrückte Tasten nicht mit. Probier mal in nem anderen Spiel ob du gleichzeitig drei Tasten drücken kanns.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
DirectInput (wie der Name vermuten lässt), ist Teil der DirectX-Suite. Allerding muss man dort aber auch nur (logischerweise) das initialisieren was auch gebraucht wird. Mehr Infos zu allem was mit DX zu tun hat gibts hier.
P.S. : Warum brauchst du denn drei Tastendrücke gleichzeitig? Zocke grade intensic Collin McRae, und brauche da selten mehr als zwei Tasten zu gleichen Zeit.
Wenn ich schnell fahren will, dabei linken und dann zum schliddern(hinten rum) die Bremse drücken will? :-/ Bei Shootern oder sonstwas ist das denke ich mal nicht ganz so schlimm... Aber so wenn ich wenigstens so machen könnte das die Bremse vor gezogen wird (also das gasgeben an letzter stelle) dann würde es evtl. klappen... ich schau mal bei DirectInput vorbei :-/ in der Hoffnung nicht Fremdzugehen
Wenn ich schnell fahren will, dabei linken und dann zum schliddern(hinten rum) die Bremse drücken will?
Dafür braquchste 2 Tasten: links/rechts + bremse. gas wird nicht gegeben, wenn man bremst handbremse zieht üblicherweise an den hinterrädern an und ein gro der schnellen karren sind hinterradtriebler, folglich ist gas + bremse sinnlos das ginge theoretsich nur bei vorderradtrieblern, führt dort aber zu gigantischem reifenverschleiß... Und ob ne Allradgetriebe so ne Atacke schadlos überstehen würde? Ich denke 2 Tasten müssten im Normalfall genügen, aber DirectInput könnte hier durchaus Abhilfe schaffen.
Habe es jetzt nochmal genau so gemacht wie Fiji-F
Aber es klappt nicht so wie bei SBS, woran kann es liegen?
Das es bei SBS geht und bei mir nicht? :-/
Nur als Anmerkung: Die Verwendung von DirectInput ist nicht übertrieben kompliziert. Beim DirectX-SDK sind gute (C++) Demoprogramme dabei und die Hilfe erklärt das eigentlich auch gut. Es ist im Grunde wie mit der WinAPI bzw. OpenGL: Die Initialisierung ist kompliziert, die Benutzung einfach.
Ich sehe auch absolut kein Problem darin, DirectX/DirectInput und OpenGL gleichzeitig zu verwenden: Wenn dein Programm direkt auf der WinAPI aufsetzt (was ja scheinbar der Fall ist), ist es ohnehin Essig mit der Plattform-Unabhängigkeit. Ansonsten kannst du eben auch gleich auf SDL setzen, das kümmert sich dann auch um das DirectInput-Interface.
Gruß,
Arno
P.S.: Dass es nur an einer Billig-Tastatur liegt, kann ich mir nicht vorstellen. In den DOS-Zeiten gab es viele Spiele, die man zu zweit auf einer Tastatur gespielt hat, was bei mir und meinen Freunden nie ein Problem war (und da sind sicher mehr als 3 Tasten gleichzeitig im Spiel).
Mitglieder in diesem Forum: 0 Mitglieder und 12 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.