Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

17.09.2011, 14:33

Kamera wird Langsamer

Hallo
Ich habe im Moment einen kleinen Test geschrieben.
Um die kamera zu bewegen ( nur auf der Y Achse ) verwende ich folgenden Code:

C-/C++-Quelltext

1
if(GetAsyncKeyState(VK_ADD))        g_vCameraPos.y -= g_vCameraPos.y * 4 * fNumSecsPassed;

Wenn ich nun + Drücke "Fliegt" die Kamera auch nahc unten aber wird als Langsamer!
Wieso ist das so? ( Standard Frage ;) )
Und so berechne ich die KameraMatrix:

C-/C++-Quelltext

1
2
3
4
5
mCamera = tbMatrixCamera(g_vCameraPos,
                             g_vCameraPos + tbVector3(sinf(g_fCameraAngleX),
                                                           g_fCameraAngleY,
                                                           cosf(g_fCameraAngleX)),
                             tbVector3(0.0f, 1.0f, 0.0f));

Danke

Beiträge: 721

Wohnort: /dev/null

Beruf: Software-Entwickler/Nerd

  • Private Nachricht senden

2

17.09.2011, 14:57

>> g_vCameraPos.y -= g_vCameraPos.y * 4 * fNumSecsPassed;
Deswegen.

3

17.09.2011, 15:01

Hää
Ok und was ist die Lösung?

Beiträge: 721

Wohnort: /dev/null

Beruf: Software-Entwickler/Nerd

  • Private Nachricht senden

4

17.09.2011, 15:13

Siehst du es wirklich nicht? Du berechnest anhand deiner aktuellen Position die Position für den nächsten Frame und nutzt dabei ausschließlich deine aktuelle Position in deinem Term. Wenn du nun also dich nach unten bewegst, wird deine Kamera langsamer. Wenn du auf Y = 0 bist, kannst du dich gar nicht mehr bewegen.

5

17.09.2011, 15:20

Irgendwie finde ich aber keine andere Lösung!
Wie geht's sonst?
Danke

Beiträge: 721

Wohnort: /dev/null

Beruf: Software-Entwickler/Nerd

  • Private Nachricht senden

6

17.09.2011, 15:21

Überlege mal, du musst einfach die Abhängigkeit von der aktuellen Position weglassen.

7

17.09.2011, 19:17

Oh stimmt Danke.
Aber eine Frage hätte ich dann noch:
Wenn ich nun meine Kamera hoch oder runter blicken lasse mit g_fCameraAngleY ( name der Variable ) ist das gleiche Problem dass sie oben und unten langsamer wird.
Habe jetzt geguckt, ob es der gleiche Fehler wie mit der Bewegung ist aber nein, wie kann ich dass lösen?
Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
// Move Funktion
vCameraDir = tbVector3( sinf(g_fCameraAngleX), 0.0f, cosf(g_fCameraAngleX) );
if(GetAsyncKeyState(VK_LEFT))       g_fCameraAngleY += 1.0f * fNumSecsPassed;
if(GetAsyncKeyState(VK_RIGHT))      g_fCameraAngleY -= 1.0f * fNumSecsPassed;

//Render Funktion
mCamera = tbMatrixCamera(g_vCameraPos,
                             g_vCameraPos + tbVector3(sinf(g_fCameraAngleX),
                                                           g_fCameraAngleY,
                                                          cosf(g_fCameraAngleX)),
                             tbVector3(0.0f, 1.0f, 0.0f));

Danke

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »schreib_muffel« (18.09.2011, 21:19)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

18.09.2011, 15:40

Habe jetzt geguckt, ob es der gleiche Fehler wie mit der Bewegung ist aber nein, wie kann ich dass lösen?

Am besten den Code beim nächsten Mal selber schreiben und ihn das machen lassen, was Du vor hast.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

9

18.09.2011, 21:20

Aha ja...
Und gibts eine Lösung?

Beiträge: 721

Wohnort: /dev/null

Beruf: Software-Entwickler/Nerd

  • Private Nachricht senden

10

18.09.2011, 21:27

Aha ja...
Und gibts eine Lösung?

Ja, gibt es.

Werbeanzeige