Kamera Dreh Problem
Übersicht

Omenaton_2Betreff: Kamera Dreh Problem |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo !
Es ist ein etwas schwierig und umständlich mein Problem zu schildern, aber ich versuche es trotzdem. Ich habe ein Raumschiff im 3D Raum. Es kann fliegen und ich kann die Kamera steuern, fast so wie ich es will aber eben nicht ganz. Die meisten von euch kennen wahrscheinlich World of Warcraft. Ich mache die Kamera bei mir ganz genauso wie bei WoW. Das heißt: Es beginnt in 3. Person View - Die Kamera befindet sich schräg hinter und über dem Charakter, in meinem Fall ein Raumschiff. Man kann mit Mausrad rein und raus zoomen und wenn man sehr nahe ranzoomt, dann wechselt die Kamera zu einer anderen, 1. Person EgoShooter Kamera. Wenn man rauszoomt, dann kommt wieder die 3. Person Kamera zum Einsatz. Das funktioniert gut. Wenn man die rechte Maustaste gedrückt hält und die Maus seitwärts bewegt, dann dreht sich das Raumschiff und die Kamera auch gleicher Maßen. Wenn man die Linke Maustaste gedrückt hält, dann kann man die Kamera um das Schiff herum drehen (x und Y), ohne daß sich dabei das Schiff drehen würde. Nur die Ansicht ändert sich. Hierbei kommt es zu einem unerwünschten und für mich bisher unerklärlichen Nebeneffekt, nach dem ich ein Mal die Kamera um die X-Achse gedreht habe (also wenn die Kamera flacher oder steiler auf das Schiff schauen soll). Das Unerklärliche ist, daß wenn ich dann die Kamera nur noch seitwärts bewegen will (Wie flach soll gleich bleiben, nur die Richtung ändert sich), dann kommt es zu dem Phänomen, daß sich das Schiff es irgendwie scheinbar gemerkt hat an welcher Stelle ich schon mal die Kamera gekippt habe und wenn ich um das Schiff nur seitwärts kreise, kippt immer wieder an der selben Stelle die Kamera ein wenig. Ich gebe keinen Befehl für Kippen, nur für seitwärts, trotzdem kippt die Kamera. Ergänzend muß ich sagen, daß ich die Kamera nicht direkt an das Schiff richte, sondern in der Mitte des Schiffes habe ich ein Pivot, der als Dreh- und PointEntity Punkt für die Kamera dient. Wenn ich also mit der linken Maustaste die Kamera seitwärts schiebe, dann bleibt das Schiff unangetastet, ich drehe (TurnEntity) nur den Kamera Pivot innerhalb des Schiffes und richte dann ständig die Kamera mit PointEntity auf den Pivot aus. Für mein Spiel soll die gute Steuerung elemental wichtig sein, deshalb kann ich mir dabei keine Ungereimtheiten leisten. Es ist schon ganz ok so wie es ist, es ist nicht komplett falsch, aber ich will es perfekt machen und ich muß es wissen, wieso es zu einer unerwünschten Bewegung kommt. |
||
![]() |
Tankbuster |
![]() Antworten mit Zitat ![]() |
---|---|---|
Könntest du bitte mal den Code posten? | ||
Twitter
Download Jewel Snake! Windows|Android |
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Tankbuster hat Folgendes geschrieben: Könntest du bitte mal den Code posten?
Den ganzen Code kann ich nicht posten, das ist zu viel. Ich könnte eine Teil des Codes posten, wo es um Kamera Bewegung geht. Selbst das ist nicht wenig. Ich warte erstmal 1 Tag, ob jemand nicht auch so sich vorstellen kann, warum etwas nicht stimmt. Was ich eventuell nicht bedacht habe. Wenn nicht, dann poste ich wahrscheinlich einen Teil des Codes. |
||
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hier sind die Ausschnitte aus dem Code, von denen ich glaube, daß sie irgendwie die Kamera beeinflussen. Mehr solche Stellen konnte ich nicht finden:
Code: [AUSKLAPPEN] ; Das passiert vorne irgendwo ein Mal:
EntityParent CameraSpielfeld , PivotShipCam PointEntity CameraSpielfeld, PivotShipCam EntityParent Camera_1_Per, MOD_PlayerShip_p01 ;--- M A U S ------------------------------------------------------- .Maus ;... Camera 3. Person Dreh und Zoom Check .......................................................... If MouseDown(1) = True And CamModus = 3 Then If MouseX() < MXalt Then LockMaus = JA MXalt = MouseX() TurnEntity PivotShipCam, 0, 5, 0 PointEntity CameraSpielfeld, PivotShipCam ;MOD_PlayerShip_p01 EndIf If MouseX() > MXalt Then LockMaus = JA MXalt = MouseX() TurnEntity PivotShipCam, 0, -5, 0 PointEntity CameraSpielfeld, PivotShipCam ;MOD_PlayerShip_p01 EndIf If MouseY() < (MYalt - 5) Then LockMaus = JA MYalt = MouseY() TurnEntity PivotShipCam, 2, 0, 0 PointEntity CameraSpielfeld, PivotShipCam ;MOD_PlayerShip_p01 EndIf If MouseY() > (MYalt + 5) Then LockMaus = JA MYalt = MouseY() TurnEntity PivotShipCam, -2, 0, 0 PointEntity CameraSpielfeld, PivotShipCam ;MOD_PlayerShip_p01 EndIf EndIf ; Maus am Bildschirmrand If MouseX() < 1 Then LockMaus = JA MXalt = MouseX() TurnEntity PivotShipCam, 0, 1, 0 TurnEntity MOD_PlayerShip_p01, 0, 1, 0 PointEntity CameraSpielfeld, PivotShipCam;MOD_PlayerShip_p01 EndIf If MouseX() > 1277 Then LockMaus = JA MXalt = MouseX() TurnEntity PivotShipCam, 0, -1, 0 TurnEntity MOD_PlayerShip_p01, 0, -1, 0 PointEntity CameraSpielfeld, PivotShipCam;MOD_PlayerShip_p01 EndIf Return ;*** Tastatur *************************************************** .Tastatur If KeyDown(203) And LockSteuerungAll = NEIN Then ; (Links) TurnEntity MOD_PlayerShip_p01, 0, 1, 0 TurnEntity PivotShipCam, 0, 1, 0 If CamModus = 3 Then PointEntity CameraSpielfeld, PivotShipCam If CamModus = 1 Then TurnEntity CameraSpielfeld, 0, 0.005,0 ;TurnEntity CameraSpielfeld, 0, 0.005 * PlayerShip\AktSpeed, 0 PlaySound (sndClick1) EndIf If KeyDown(205) And LockSteuerungAll = NEIN Then ; (Rechts) TurnEntity MOD_PlayerShip_p01, 0, -1, 0 TurnEntity PivotShipCam, 0, -1, 0 If CamModus = 3 Then PointEntity CameraSpielfeld, PivotShipCam If CamModus = 1 Then TurnEntity CameraSpielfeld, 0, -0.005,0 ;TurnEntity CameraSpielfeld, 0, -0.005 * PlayerShip\AktSpeed, 0 PlaySound (sndClick1) EndIf Return ;*** Player Ship Status Anpassung an Werten ************************************************ .PlShipAnpassung If PlayerShip\AktSpeed > 0 Then MoveEntity MOD_PlayerShip_p01, 0, 0, 0.005 * PlayerShip\AktSpeed ;MoveEntity PivotShipCam, 0, 0, 0.005 * PlayerShip\AktSpeed PositionEntity PivotShipCam, EntityX#(MOD_PlayerShip_p01), 0, EntityZ#(MOD_PlayerShip_p01) PositionEntity SkyBox01_1, EntityX#(PivotShipCam), 0, EntityZ#(PivotShipCam) EndIf Return |
||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
Rollt die Kamera, obwohl sie nur Drehen und Kippen soll?
Dreh einen Gegenstand mal so, dass er immer auf einem Punkt ausgerichtet ist und sich um jenen dreht. 90° y drehen 90° x kippen -90° y drehen und schon hast du die 90° z drehung. rotateentity Ent,EntityPitch(Ent),EntityYaw(Ent),0 Ich hoffe, ich hab dein Problem verstanden. |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Steptiger, danke für deine Antwort.
Nein, du scheinst das Problem nicht ganz richtig verstanden zu haben. Stell dir vor, du schaust auf mein Raumschiff von oben. Das Problem ist, daß wenn ich die Kamera seitwärts drehe, in einem Bereich die Kamera auch zusätzlich leicht nach vorne kippt, obwohl es keinen ersichtlichen Grund dafür gibt. Dies passiert nur, nach dem ich vorher einmal die Kamera tatsächlich absichtlich nach vorne gekippt habe (entlang X Achse). Das ganze ist nicht so schlimm wie es sich anhört. Im Grunde funktioniert die Steuerung fast so wie es soll. |
||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
"Pointet" die Kamera auf irgendwas | ||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, die Kamera pointet auf : PivotShipCam
Zu sehen in der Subrutine "Maus". Aber du bringst mich damit auf eine Idee, ich werde heute Abend was ausprobieren. (Es ist aber unwahrscheinlich, daß das die Lösung sein wird.) |
||
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe gestern Abend nur sehr wenig Zeit gehabt, aber habe reingeschaut.
Ich habe jetzt Anzeigen für die aktuellen Winkeln des Schiffs, der Camera und Camera-Pivot eingebaut. Es sieht so aus, daß wenn ich nahezu gleichzeitig eine Drehung auf der X und auf der Y Achse vornehme, ein wenig auch die Z Achse sich dreht. Also, wenn ich das Schiff nach oben kippe und auch nach links drehe, dann kommt noch eine ungewollte Roll-Bewegung hinzu. (X + Y = Z Veränderung) Ist das normal so (könnte ich mir durchaus vorstellen, daß es ist) oder sollte das nicht sein ? |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group