JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=53cf253816bff7a87904d3c0ee5a542eMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Problem mit Tastaturabfrage

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
nigs
Super JLI'ler



Anmeldedatum: 19.12.2002
Beiträge: 359

Medaillen: Keine

BeitragVerfasst am: 01.02.2007, 19:40    Titel: Problem mit Tastaturabfrage Antworten mit Zitat

bin grad an der steuerung von nem 3d-game und das model bewegt sich auch und is auch schön animiert aber das problem ist, wenn ich die w-taste gedrückt halte bewegt sich das model erst um 1 einheit nach vorne, bleibt kurz stehen und bewegt sich dann erst konstant bis man die taste wieder loslässt. diese verzögerung kennt man ja auch vom schreiben wenn man ne taste gedrückt hält ratterts ja auch nich gleich alle buchstaben rein sondern wartet kurz und dann erst.
aber ich brauch des halt unbedingt ohne die verzögerung.
hier n bisschen vereinfachter code(die klasse kommt von irrlicht) um die bewegung abzufragen wenn das bei der hilfe hilft Smile
Code:
class MyEventReceiver : public IEventReceiver
{
public:
   virtual bool OnEvent(SEvent event)
   {
      if (event.EventType==irr::EET_KEY_INPUT_EVENT&&event.KeyInput.PressedDown)
      {
         switch(event.KeyInput.Key)
         {
         case KEY_KEY_W:
                 {
                    beweg disch
                 }
         
            return true;
         }
      }
      return false;
   }
};

kennt sich hier zufällig jemand damit aus?? Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Otscho
Super JLI'ler


Alter: 36
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 01.02.2007, 20:04    Titel: Antworten mit Zitat

Die Methode hast du warscheinlich von dem Project "MoveSprite" abgekupfert. Das Problem daran is, dass sie auf Events reagiert, das dein System deinem Programm übergibt. Wenn du hier die W-Taste drückst bekommt dein Programm die Meldung so wie sie du beschrieben hast.

Daher solltest du entweder mit
CPP:
GetAsyncKeyState(VK_LEFT)

kontrollieren ob die Taste gedrückt ist (Beispiel : "MoveSpriteEx") oder, wenn du ein wenig Erfahrung hast, es mit DirectInput versuchen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 01.02.2007, 20:20    Titel: Antworten mit Zitat

Genau. Oder du benutzt DirectInput für die Tastaturabfragen.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
nigs
Super JLI'ler



Anmeldedatum: 19.12.2002
Beiträge: 359

Medaillen: Keine

BeitragVerfasst am: 02.02.2007, 13:54    Titel: Antworten mit Zitat

@Otscho werde das mal ausprobieren mit getasynckeystate... btw welches projekt movesprite meinst du(sprites sind außerdem für 2d-zeugs ich will da ja nich nur flache bildchen rumrennen lassn)? und das andere sagt mir auch nix. ich hab das von denn irrlicht-examples abgeschaut weil da immer diese methode verwendet wird und hab jetz halt schon alles gecodet und gehofft mir fehlen nur die 1-2 befehle know-how um das mit dieser methode flüssig zum laufen zu bringen aba wenn das garnich mit der geht muss ichs wohl ändern

@jonathan ne steht eigtl auser frage, wär unakzeptabel wenn man immer zum ausführen erst n emulator starten müsste.... Wink

thx für die schnellen antwortn Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 02.02.2007, 13:55    Titel: Antworten mit Zitat

Otscho hat Folgendes geschrieben:
oder, wenn du ein wenig Erfahrung hast, es mit DirectInput versuchen.

Jonathan_Klein hat Folgendes geschrieben:
Genau. Oder du benutzt DirectInput für die Tastaturabfragen.

Stimmt...DirectInput geht auch Very Happy

Gibts denn in einer so populären Engine wie der Irrlicht keine Unterstützung von DirectInput-Eingaben? Surprised
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Otscho
Super JLI'ler


Alter: 36
Anmeldedatum: 31.08.2006
Beiträge: 338
Wohnort: Gummibären-Gasse
Medaillen: Keine

BeitragVerfasst am: 02.02.2007, 15:30    Titel: Antworten mit Zitat

nigs hat Folgendes geschrieben:
btw welches projekt movesprite meinst du(sprites sind außerdem für 2d-zeugs ich will da ja nich nur flache bildchen rumrennen lassn)?


Das ist ein Beispiel aus dem Buch von Kapitel 21. Indem das Thema behandelt wird. Ich ging davon aus das dir das Buch ein Begriff ist.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
nigs
Super JLI'ler



Anmeldedatum: 19.12.2002
Beiträge: 359

Medaillen: Keine

BeitragVerfasst am: 03.02.2007, 02:16    Titel: Antworten mit Zitat

@otscho
wenn das das erste ist ists mir schon n begriff aber seeeehr lange her als ich das letzte ma in der hand hatte.

@thelordofprogramming: nicht dass ich wüsste, afaik is das nich zuletzt deswegen weil irrlicht nich nur für windows is. ich persönlich find das toll, da gerade eine populäre engine auch überall laufen sollte... Rolling Eyes
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Chriss
Senior JLI'ler



Anmeldedatum: 18.08.2004
Beiträge: 267

Medaillen: Keine

BeitragVerfasst am: 03.02.2007, 09:47    Titel: Antworten mit Zitat

Ich hab mir mal Irrlicht angesehen. Es gibt Kameras, welche sich gleich um die Tastaturabfrage kümmern. Soweit ichmich erinner gab es eine die sich wie bei einem 3D Shooter verhällt und eine die in Richtung Diablo geht.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nigs
Super JLI'ler



Anmeldedatum: 19.12.2002
Beiträge: 359

Medaillen: Keine

BeitragVerfasst am: 03.02.2007, 13:14    Titel: Antworten mit Zitat

Chriss hat Folgendes geschrieben:
Ich hab mir mal Irrlicht angesehen. Es gibt Kameras, welche sich gleich um die Tastaturabfrage kümmern. Soweit ichmich erinner gab es eine die sich wie bei einem 3D Shooter verhällt und eine die in Richtung Diablo geht.


Ja, das weiss ich aber ich will ja keine kamera bewegen mir gehts grad dadrum den player zu bewegen nicht die kamera. ich will später die kamera abhängig vom player und nich umgekehrt bewegn^^


Thread kann von mir aus geschlossen werden, meine frage is ja schon beantwortet... Rolling Eyes
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 04.02.2007, 12:50    Titel: Antworten mit Zitat

nigs hat Folgendes geschrieben:


@jonathan ne steht eigtl auser frage, wär unakzeptabel wenn man immer zum ausführen erst n emulator starten müsste.... Wink


Äh, wenn du WindwosMessages benutzt, brauchste doch eh zumindest Wine, oder?

Ich bin jetzt nich so der super Linux freak, aber es gibt doch OpenGL für Grafik, OpenAL für Sound, müsste es dann nicht auch was gescheites, systemübergreifendes für Eingabe geben?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
nigs
Super JLI'ler



Anmeldedatum: 19.12.2002
Beiträge: 359

Medaillen: Keine

BeitragVerfasst am: 11.02.2007, 17:21    Titel: Antworten mit Zitat

Jonathan_Klein hat Folgendes geschrieben:
nigs hat Folgendes geschrieben:


@jonathan ne steht eigtl auser frage, wär unakzeptabel wenn man immer zum ausführen erst n emulator starten müsste.... Wink


Äh, wenn du WindwosMessages benutzt, brauchste doch eh zumindest Wine, oder?

Ich bin jetzt nich so der super Linux freak, aber es gibt doch OpenGL für Grafik, OpenAL für Sound, müsste es dann nicht auch was gescheites, systemübergreifendes für Eingabe geben?


kA wie des jetz mit windowsmessages is, aber die Klasse in der die Funktion(OnEvent) zum Abfragen der Eingaben drin ist, ist von irrlicht abgeleitet(IEventReceiver) und mit:
Code:
device->setEventReceiver(&receiver);

teilt man der Engine mit dass sie die von mir selber geschriebene Funktion aus der von irrlicht abgeleiteten Klasse aufrufen soll.
Die Engine hat ja extra klassen für Events, oben is ja der code wie ich meinen "eigenen" EventReceiver definier.

Also daraus und der 100% Lauffähigkeit von Irrlicht unter Linux würd ich schliessen, dass ich den gleichen Code ohne Probleme unter Linux komplieren kann ohne Fehler und mit dem gleichen Ergebnis. Smile
(oder etwa nich?! hab im mom leider nur XP drauf und kanns nich testn...)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 11.02.2007, 17:31    Titel: Antworten mit Zitat

achso, über Irrlicht. Ja klar, das wird dann wohl unter Linux einfach Linux Nachrichten nehmen, die es da wohl auch geben müsste. Damit wäre das ja wieder geregelt.
Aber bietet Irrlicht keine gescheite Tastaturabfrage an? In den Demos konnte man doch auch durch 3D Levels fliegen, ohne das es gehackelt hat.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
nigs
Super JLI'ler



Anmeldedatum: 19.12.2002
Beiträge: 359

Medaillen: Keine

BeitragVerfasst am: 13.02.2007, 15:56    Titel: Antworten mit Zitat

Jonathan_Klein hat Folgendes geschrieben:
achso, über Irrlicht. Ja klar, das wird dann wohl unter Linux einfach Linux Nachrichten nehmen, die es da wohl auch geben müsste. Damit wäre das ja wieder geregelt.
Aber bietet Irrlicht keine gescheite Tastaturabfrage an? In den Demos konnte man doch auch durch 3D Levels fliegen, ohne das es gehackelt hat.


Jop, aber wenn man sich den code dazu anschaut, sieht man dass da nirgends explizit die tasten abgefragt werden. Die Engine kümmert sich um die Kamera-steuerung automatisch wenn man will...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 13.02.2007, 15:59    Titel: Antworten mit Zitat

Hm, mist Very Happy
Dann muss man halt mal in den Source der Engine einsteigen und da mal gucken, wies gemacht wird.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum