Entwickler-Ecke
Multimedia / Grafik - GLScene - objekt beweungs problem
mimi - Fr 03.10.03 17:23
Titel: GLScene - objekt beweungs problem
Hallo,
ich möchte das der user nur geradeaus laufen kann und mit der maus soll er dies ändern.sobalt er mit der maus den blickwinkel ändern soll er automatisch dahin laufen aber ich möchte nur gerade aus oder zurück laufen können, wie bekomme ich das mit GLScene hin ????
mimi - Sa 04.10.03 22:31
naja vileicht habe ich meine frage falsch gestellt.
bei bekannten spielen(ego shootern) muss man doch nur zwei tasten drücken(eine für vorwärts und eine für rückwärts) und mit der maus kann man dann den blickwinkel ändern(das habe ich hinbekommen) dann läuft der objekt in die richtung in der ich schaue und genau das will ich auch hinbekommen. hat da jemmand eine idee ?
Raphael O. - Sa 04.10.03 23:16
Quelltext
1: 2: 3: 4:
| Spieler.position.X:=Spieler.position.X-sin(yrot*pi/180)/FrameTime * geschwindigkeitsfaktor;
Spieler.position.Z:=Spieler.position.Z+cos(yrot*pi/180)/FrameTime*geschwindigkeitsfaktor; |
wie man das allerdings in GLScene einbaut weiß ich nicht...
mimi - So 05.10.03 11:07
ich werde es mal so testen wie es da steht und nur einige sachen ändern *G*. mal sehen ob es funktioniert.
mimi - So 05.10.03 11:42
was ist "yrot" ?
Raphael O. - So 05.10.03 12:03
der Rotationswinkel um die Y-Achse...
wenn du bei 0 z.B. vorne hast, dann ist 90° rechts 180° die andere Richtung (hinten) usw...
mimi - So 05.10.03 12:11
die frage ist jetzt, wie setzt ich das um. muss ich jetzt für alle richtungen einfach den wert yrot ändern ?
Raphael O. - So 05.10.03 12:20
also...
du hast irgendwo doch den yrot-Wert gespeichert, denn wenn du die MAus zur Seite bewegst, dann dreht sich doch die Welt um dich (bzw. du drehst dich in der Welt :mrgreen:)...
damit sich aber flüssig gedreht wird und nicht jedes mal wenn du die Maus bewegst die Richtung wieder von "geradeaus" aunfängt muss irgendwo dieser WErt schon gespeichert sein und er verändert sich, wenn du die Blickrichtung änderst (eigentlich umgekehrt, aber das tut ja nichts zur Sache ;))
wenn nun die "vorwärts"-taste gedrückt wird setzt du als Bsp. eine Boolean-Variable auf true und wenn diese Taste wieder losgelassen wird setzt du die Variable wieder augf False...
nun überprüfst du in jedem Frame, ob die taste gedrückt ist (anhand der Variable) und wenn ja, dann musst du die Position, in der du dich befindest, in der Welt ändern (die Werte, die bei gltranslate angegeben werden..)
und die neuen Werte dafür rechnest du anhand der oben schon geposteten Formel aus...
Wenns unklar ist :D dann sag das ;)
mimi - So 05.10.03 12:58
das mit der mausbeweung mache ich so:
Delphi-Quelltext
1: 2:
| GLCamera1.MoveAroundTarget(MousePos.Y - Y, MousePos.X - X); MousePos.x:=x; MousePos.Y:=y; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!