Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 12, 2025 07:59

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Objekt bewegen
BeitragVerfasst: Di Apr 13, 2004 01:56 
Offline
DGL Member

Registriert: Fr Mär 05, 2004 19:15
Beiträge: 118
Wohnort: Lemgo
Hallo!

Habe ein weiteres problem! Hm...das wird schwierig zu erklären. Nagut dann werde ich es mal probieren:

Ich habe mir eine Map-Datei erstellt. Und habe eine Figur. Wenn man mit der Maus irgendwo hinklickt, geht die Figur zu diesem Punkt. Aber mit der Z Achse gibt es irgendwie ein problem. Wenn die Figur Z.b. Unten Links ist und man klickt oben Rechts hin, geht die Figur nur die X Achse und nicht die Z Achse. Das gleiche ist wenn die Figur unten rechts ist und man klickt oben links hin. Wenn die Figur aber oben ist und man klickt irgendwo nach unten rechts oder links geht es! Am Code direkt kann es nicht liegen. Habe es mit einem Button getestet da ging es. Hier mal der Code den ich habe:

Code:
  1.  
  2.   //Z Achse
  3.   If Not (SPosZ=EPosZ) then
  4.   Begin
  5.     If ZN=False then
  6.     SPosZ:=SPosZ+3
  7.    else
  8.     SPosZ:=SPosZ-3;
  9.   end;
  10.  
  11.   //X Achse
  12.   If Not (SPosX=EPosX) then
  13.   Begin
  14.     If XN=False then
  15.     SPosX:=SPosX-3
  16.    else
  17.     SPosX:=SPosX+3;
  18.   end;
  19.  
  20.   PositionGL(SPosX,SPosZ);
  21.   If (SPosZ=EPosZ) And (SPosX=EPosX) then
  22.   Timer1.enabled:=false;
  23.  


Dieser Code steht in einem TTimer. Interval steht auf 30. SPosX und SPosZ sind die Start Punkte. EPosX und EPosZ sind die Endpunkte. XN und ZN sind Boolean Variablen. PositionGL ist eine Prozedure die die Maus Koordinaten umrechnet in OpenGL Koordinaten. Im OnCreate:

Code:
  1.  
  2.   SPosX:=396 div 3*3;
  3.   SPosZ:=287 div 3*3;
  4.  


Und in OnMouseDown steht folgendes:

Code:
  1.  
  2.     EPosX:=X div 3*3;
  3.     EPosZ:=Y div 3*3;
  4.     If SPosX>EPosX Then
  5.     XN:=False
  6.    else
  7.     XN:=True;
  8.  
  9.     If SPosZ<EPosZ Then
  10.     ZN:=False
  11.    else
  12.     ZN:=True;
  13.     Timer1.Enabled:=True;
  14.  


Als Figur habe ich als Test einen Quad:

Code:
  1.  
  2.   glBindTexture (Gl_TEXTURE_2D, Texture[2]);
  3.   glBegin(GL_QUADS);
  4.   glTexCoord (0,0); glVertex3f(px+30,5,pz);
  5.   glTexCoord (0,1); glVertex3f(px+30,5,pz+5);
  6.   glTexCoord (1,1); glVertex3f(px+30,-1.0,pz+5);
  7.   glTexCoord (1,0); glVertex3f(px+30,-1.0,pz);
  8.   glEnd;
  9.  


PX und PZ sind Variablen von Type TGLFloat. Diese Variablen enthalten die GL Koordinaten die die Prozedure "PositionGL" bzw. GluUnProject zurückgibt. Was mache ich falsch? Woran kann das liegen, dass wenn die Figur unten ist und man klickt irgendwo oben, dass die Figur sich nicht nach oben bewegt?

_________________
irc.euirc.net _> #delphi-hilfe


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Apr 13, 2004 15:13 
Offline
DGL Member

Registriert: Fr Mär 05, 2004 19:15
Beiträge: 118
Wohnort: Lemgo
Ubs, sorry! Bin ich doof ^^ ich musste Z -> pz einfach nur um 5 auch senken nach der berechnung der Koordinaten.

_________________
irc.euirc.net _> #delphi-hilfe


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]