Autor Beitrag
MH
Hält's aus hier
Beiträge: 11

Win XP
D3, D2005
BeitragVerfasst: Mo 17.10.05 16:55 
Ich bin ma angefangen bisschen in openGL rumzuspielen und wollte jetzt ma wissen wie ich mich am besten in meiner Umgebung bewegen kann.

Ich hab es so versucht wurde aber irgendwie nix :(
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure Render;
begin
...
     gltranslated(movex,0,movez);
...
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
     case Key of
         'w': inc[movez];
         's': movez := movey -1;
         'a': movex := movex-1;
         'd': inc(movex);
     end;
end;


Und mit dem drehen hab ich überhaupt keine idee wie ich dies machen soll. Und die KeyPress procedure macht irgendwie auch nix. Bei einem anderen Projekt kann ich aber so z.B. das Programm schließen
Fabian W.
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1766

Win 7
D7 PE
BeitragVerfasst: Mo 17.10.05 17:24 
Setz ma KeyPreview der Form auf true
Phobeus
ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1280

Linux (FC6), WinXP Pro (Box)
D6 Pers, D7 Pro, FPC 2.x
BeitragVerfasst: Mo 17.10.05 18:56 
Welches Problem Du auch immer hast: Beschreibe es. "Wurde dann nichts" ist absolut unzureichend und animiert nicht dazu, sich weiter mit dem Problem zu befassen.
Schaue ich mir dann an, den Code an und stelle auf der Hand 3 "Fehler" fest, frage ich mich, ob nötige Grundlagen gegeben sind.
1. Ersetze dein x := x - 1 durch dec()
2. inc[] interpretiere ich mal als inc()
3. Die Z-Achse von OpenGL geht nach vorne hin in den negativen Bereich. Ich unterstelle Dir mal, dass Du nicht gezielt hier ein Szenario hast, wo dies nicht zur Geltung kommt.
Die Bewegung, die Du anstrebst, erreichst Du nicht auf dem Weg, den Du nimmst. Zum einen werden Bewegung in den seltensten Fällen ganze Zahlen sein (spätestens bei TimeBasedMovement nicht mehr). Ein intelligenterer Ansatz für eine Bewegung über Vektoren geregelt bei der einer nach oben, einer nach vorne und einer nach links/rechts zeigt und das Objekt dann bei einer Bewegung nach vorne bewegt werden kann. Sofern Du nur eine Ebene hast, kannst Du das Problem auch mit ein wenig schulischen Sinus lösen in der Du mit Links/Rechts den Winkel veränderst und mit up/down die Bewegung zu oder weg von dieser Winkelrichtung. Sollen alle Achsen verwendet werden, kommst Du nicht um Vektorenberechung umher. Zwei Beispiele, die sich diesem Thema widmen gibt es bei DGL:
www.delphigl.com/scr...e=move1&action=2
www.delphigl.com/scr...e=move2&action=2
Entsprechende lauffähige Download gibt es bei uns in der Files-Sektion.

_________________
"Menschen sterben nicht wenn man sie zu Grabe trägt, sondern wenn sie ihre Träume verlieren..."
MH Threadstarter
Hält's aus hier
Beiträge: 11

Win XP
D3, D2005
BeitragVerfasst: Mo 17.10.05 19:16 
Das Problem war das ich KeyPrewiew auf false hatte. Das zweite war nur ein tippfehler von mir :oops: und das andere werd ich mir denn noch ma genauer angunken.
Nils:D
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 131

Debian, Win XP
Delphi 7 Arch.
BeitragVerfasst: Fr 21.10.05 17:29 
Das hier wird dir evtl. noch hilfreich sein:
www.dcw-group.net/dc...coding/oglkurs/index