Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 16.05.2004, 16:44 Titel: Fadenkreuz |
|
|
Tachchen,
ich will in einen Spiel ein Fadenkreuz (Sprite) bewegen und hab mit Direct Input und der Erklärung von Christians Buch die Mousebehandlung gemacht. Allerdings ruckelt das wie Sau. Hat jemand ne Idee was ich verkehrt mache? _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 16.05.2004, 16:58 Titel: |
|
|
Nein weil wir nicht wissen, WIE du es machst ;) Zeig doch mal den relevanten Source Code, dann können wir dir besser helfen. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 16.05.2004, 17:15 Titel: |
|
|
Ich kann mir schon denken woran es liegt. Das ist so ne Sache mit der Mausabfrage, die wird meiner Meinung nach im Buch vollkommen unzureichend erklärt (kleine Kritik, aber das Buch ist trotzdem super).
Da wurde schon so oft in diesem Forum drüber geschrieben.
Ich denke es liegt daran das du GetDeviceData statt GetDeviceState benutz.
Gibt einfach mal in der Forensuche:
Maus
GetDeviceState
GetDeviceData
DirectInput
oder so was in der Art ein. Dann findest du bestimmt die Antwort! _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 17.05.2004, 16:20 Titel: |
|
|
Mensch danke für die Antwort, funktioniert einwandfrei!!! Hast mir wirklich weitergeholfen! Dank Dir!!! _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
|
Nach oben |
|
|
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 17.05.2004, 18:31 Titel: |
|
|
Na eine Frage hätt ich doch noch. Ich hab das jetzt folgendermaßen gelösst:
Code: | ZeroMemory(&data,sizeof(data));
if(FAILED(m_lpDIDevice->GetDeviceState(sizeof(data),&data)))
{
// die Mouse wurde zwischenzeitlich
// von einer andere Anwendung genutzt
// Kontrolle wiederholen
m_lpDIDevice->Acquire();
return 0;
}
MouseX += data.lX;
MouseY += data.lY;
|
Wenn ich da eine if abfrage mache ob das noch innerhalb der Bildschirmgröße ist und er in die nähe des randes kommt mach er von Zeit zu Zeit mit dem bewegten Sprite einen kleinen Ruckler bevor er zum Rand richtig ran geht.
Ich frag's auf diese Art und Weise ab (nur Beispiel für links):
Code: |
if(MouseX +data.lX > 0)
{
MouseX += data.lX;
}
|
Was ist verkehrt? _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
|
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 17.05.2004, 18:48 Titel: |
|
|
erstmal solltest du die framerate in die berechnung der neuen koordinaten reinnehmen...sonst bewegt sich die maus auf verschiedenen rechner verschieden schnell...steht eh im buch.
woher der ruckler genau kommt, weiß ich auch nicht...ich würd aber die neuen koordinaten normal berechnen und dann am ende einen check in der art einbauen:
Code: |
if (mouseX > 800)
mouseX = 800;
else if (mouseX < 0)
mouseX = 0;
.
.
.
|
|
|
Nach oben |
|
|
=]Mid[=]Night[= Super JLI'ler
Anmeldedatum: 20.11.2002 Beiträge: 380 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 17.05.2004, 18:48 Titel: |
|
|
am besten schreibst du noch ein else
Code: |
if(MouseX +data.lX > 0)
{
MouseX += data.lX;
}
else
{
MouseX = 0;
}
|
|
|
Nach oben |
|
|
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 17.05.2004, 18:57 Titel: |
|
|
Jungs, Ihr seit Spitze!! Funktioniert! _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
|
=]Mid[=]Night[= Super JLI'ler
Anmeldedatum: 20.11.2002 Beiträge: 380 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 17.05.2004, 19:00 Titel: |
|
|
klar sind wir spitze und klar funzt des
am unteren / rechten rand klappts auch ? |
|
Nach oben |
|
|
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 17.05.2004, 19:11 Titel: |
|
|
noch nicht getestet. Zerbrech mir gerade den Kopf mit 3D Studio Max (wahrscheinlich bis zu dem Moment wo ich auf den Monitor eindresche).
Sollte es noch weitere Probs geben mit dem Source werd ich mich sicher melden !!! _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 17.05.2004, 19:35 Titel: |
|
|
Nur da mit der Framerate ist meiner Meinung nach Blödsinn. Denn die Funktion ist ja gerade dazu da, die relative mausposition seit der letzten Bewegung zu bekommen. Da ist es dann egal ob die letzte Abfrage 1 Sekunde oder 1/1000 Sekunde zurücklieg.
Und mit der Randabfrag mach ich das immer so:
x+=rel. XPos
y+=rel. YPos
if(x<0) x=0
if(x>800) x=800
if(y<0) y=0
if(y>600) y=600 _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 17.05.2004, 19:38 Titel: |
|
|
Über das Thema Maus mit DirectX wurde in diesem Forum schon so viel geschriebn.
Wie wärs wenn einer der moderatoren mal einen StickyPost machen würde, wo mal Links zu den wichtigsten Threads drinstehen.
Ich dewnke das würde vielen Neun helfen, da sie nicht immer auf Antworten warten müssten. So ne Art FAQ-Liste wäre sowieso mal nicht schlecht. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
schneidi74 Senior JLI'ler
Anmeldedatum: 14.05.2004 Beiträge: 243
Medaillen: Keine
|
Verfasst am: 17.05.2004, 19:58 Titel: |
|
|
Ich denke das mit der FAQ Liste wird nicht so einfach umzusetzen sein, weil es ja doch jede Menge Fragen gibt. Ich meine ich bin noch sehr am Anfang mit c++ Programmierung und ich hätte Millionen Fragen. Nur wer soll das alles in eine Liste tippen? Schön wärs allerdings schon. Soetwas wie ein Online-Nachschlagewerk...
Aber eins muss ich ja nochmal los werden. Ich hab hier nie lange auf Antworten warten müssen! Dazu erstmal Hut ab! Vor allem das hier auch Neueinsteigern einwandfrei geholfen wird ist spitze! _________________ -+- SchNeiDi74 -+-
-+- www.creative-games.de -+- |
|
Nach oben |
|
|
fowly JLI'ler
Anmeldedatum: 25.01.2004 Beiträge: 196 Wohnort: Detmold - NRW Medaillen: Keine
|
Verfasst am: 17.05.2004, 20:25 Titel: |
|
|
also, soweit ich weiß arbeitet blacklordofdragons doch an einer online-tutorial seite, also wenn ihr fragen habt, tutorials wollt oder eben ein solches dxinput faq wollt, schickt ihm das doch mal, dann haben andere nach euch auch noch was davon.
Link: http://www.online-tutorials.net _________________ <-- Noch in der Entwicklungsphase: http://www.uranus-entertainment.de -->
Das Spiel zu unserer Schule:
http://www.grabbe-game.de |
|
Nach oben |
|
|
|