Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Kaiserludi Mini JLI'ler
Anmeldedatum: 22.07.2004 Beiträge: 27
Medaillen: Keine
|
Verfasst am: 27.07.2004, 15:51 Titel: Kamera bewegen auf Y-Achse |
|
|
Momentan sieht meine Kamerafunktion so aus:
Code: |
void MAIN::Kamera(void)
{
Input.Tastatur_Update();
if(TASTE(DIK_LCONTROL) || TASTE(DIK_RCONTROL))
{
if(TASTE(DIK_LEFT))
rotation_y+=0.01f;
if(TASTE(DIK_RIGHT))
rotation_y-=0.01f;
if(TASTE(DIK_UP))
rotation_x+=0.01f;
if(TASTE(DIK_DOWN))
rotation_x-=0.01f;
}
else
{
if(TASTE(DIK_LEFT))
{
Position.x -= 0.1f * sinf(D3DX_PI/2 + rotation_y);
Position.z -= 0.1f * cosf(D3DX_PI/2 + rotation_y);
}
if(TASTE(DIK_RIGHT))
{
Position.x += 0.1f * sinf(D3DX_PI/2 + rotation_y);
Position.z += 0.1f * cosf(D3DX_PI/2 + rotation_y);
}
if(TASTE(DIK_UP))
{
Position.x += 0.1f * sinf(rotation_y);
Position.z += 0.1f * cosf(rotation_y);
}
if(TASTE(DIK_DOWN))
{
Position.x -= 0.1f * sinf(rotation_y);
Position.z -= 0.1f * cosf(rotation_y);
}
}
if(TASTE(DIK_LCONTROL) || TASTE(DIK_RCONTROL) || (!TASTE(DIK_LEFT) && !TASTE(DIK_RIGHT) && !TASTE(DIK_UP) && !TASTE(DIK_DOWN)))
D3DXMatrixIdentity(&Translationsmatrix);
D3DXMatrixMultiply(&Viewmatrix, &Viewmatrix, & Translationsmatrix);
// Berechnung der Blickrichtung in der x-z-Ebene
Blickrichtung.x = sinf(rotation_y) + Position.x;
Blickrichtung.z = cosf(rotation_y) + Position.z;
// Berechnung der Blickhöhe
Blickrichtung.y = sinf(rotation_x) + Position.y;
D3DXMatrixLookAtLH(&Viewmatrix, &Position, &Blickrichtung, &Hoehe);
Direct3D.lpD3DDevice->SetTransform(D3DTS_VIEW, &Viewmatrix);
}
|
Jetzt hätte ich es gerne so, dass , wenn ich mich um 90° auf der X-Achse nach vorne Drehe, ich also senkrecht zum Erdboden gucke, ich/die Kamera beim drücken von DIK_DOWN nach oben fliege, also die Y-Position auch vom aktuellen Drehwinkel abhängt! Es soll allerdings keine Rotation um die Z-Achse dazu nötig sein, denn man kann sich ja mit den bisherigen beiden Rotationsachsen schon in jede Richtung drehen und die Steuerung soll ja einfach bleiben!
Ich stehe momentan vor dem Problem, wie ich die neue Y-Position berechnen soll, kann mir da mal wer auf die Sprünge helfen bitte? |
|
Nach oben |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 27.07.2004, 16:03 Titel: |
|
|
Die Kamerabewegnung ist sehr einfach, wen du die LookAt Vektor hast. Du must dann einfach nur noch die kamera entsprechend dieses Vektors bewegen. Am besten Normalisierst du den Richtungsvektor (Blickpunkt-Kameraposition) und bewegst die Kamera dann in diese Richtung weiter. So kannst du die Kamera immer in die Blickrichtung bewegen. _________________ https://jonathank.de/games/ |
|
Nach oben |
|
|
Kaiserludi Mini JLI'ler
Anmeldedatum: 22.07.2004 Beiträge: 27
Medaillen: Keine
|
Verfasst am: 27.07.2004, 16:38 Titel: |
|
|
Zitat: |
Am besten Normalisierst du den Richtungsvektor (Blickpunkt-Kameraposition)
|
Und was heißt das jetzt? Sorry, ich bekomme Vektorrechnung in der Schule erst nächstes Jahr! |
|
Nach oben |
|
|
sp3cK-r0LL3 Senior JLI'ler
Alter: 34 Anmeldedatum: 18.06.2004 Beiträge: 275
Medaillen: Keine
|
Verfasst am: 27.07.2004, 17:07 Titel: |
|
|
haste das buch gelesen? _________________ sex is updatedb; locate; talk; date; cd; strip; look; touch; finger; unzip; uptime; gawk; head; apt-get install condom; mount; fsck; gasp; more; yes; more; umount; apt-get remove --purge condom; make clean; sleep |
|
Nach oben |
|
|
Kaiserludi Mini JLI'ler
Anmeldedatum: 22.07.2004 Beiträge: 27
Medaillen: Keine
|
Verfasst am: 27.07.2004, 17:10 Titel: |
|
|
Ja. |
|
Nach oben |
|
|
Hazel JLI MVP
Alter: 39 Anmeldedatum: 19.07.2002 Beiträge: 1761
Medaillen: Keine
|
Verfasst am: 27.07.2004, 17:19 Titel: |
|
|
Du dividierst den Vektor durch seine Länge, dadurch bekommt der Vektor die Länge 1. _________________ *click* Dabuu!?
Twitter: http://twitter.com/Ollie_R
|
|
Nach oben |
|
|
|