|
1 registered members (AndrewAMD),
3,675
guests, and 8
spiders. |
|
Key:
Admin,
Global Mod,
Mod
|
|
|
3rd Person Kamera
#286164
08/23/09 15:48
08/23/09 15:48
|
Joined: Aug 2009
Posts: 3
Schneaf
OP
Guest
|
OP
Guest
Joined: Aug 2009
Posts: 3
|
Hallo! Ich versuche schon seit längerem eine 3rd Person Kamera zu programmieren. Ich habe es auch mit Hilfe von Tutorials ganz einfach gelöst. Hier mal der Code:
vec_set(camera.x, vector(my.x + fcos(my.pan,-100), my.y + fsin(my.pan,-100), my.z + 50));
my.pan -= mouse_force.x * 20 * time_step;
camera.pan = my.pan;
camera.tilt += mouse_force.y * 10 * time_step;
camera.tilt = clamp(camera.tilt,-25,25);
Diese Version hier funktioniert reibungslos. Ich möchte allerdings eine kleine Änderung daran vornehmen...und dies führt zu meinem Problem. Ich würde den Spieler gerne links oder rechts im Bild haben und nicht direkt vor der Kamera. Ich habe es bereits mit verschiedenen Kosinus und Sinus Funktionen probiert aber ich komme einfach nicht dahinter wie ich dieses Problem lösen kann. Ich bräuchte mal einen kleinen Denkanstoß. Danke im voraus. Mfg Schneaf
|
|
|
Re: 3rd Person Kamera
[Re: Schneaf]
#286172
08/23/09 17:10
08/23/09 17:10
|
Joined: Sep 2003
Posts: 5,900 Bielefeld, Germany
Pappenheimer
Senior Expert
|
Senior Expert
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
|
Die erst Zeile in Deinem code könntest Du wie folgt schreiben, wenn das Ganze in der Funktion des Spielers steht:
vec_set(temp, my.pan);//übernimmt den Winkel des Spielers temp.pan += 180;//wenn die Kamera direkt hinter dem Spieler sein soll //der Wert kann geändert werden, damit die Kamera eher 'schräg' hinter dem Spieler sitzen soll vec_for_angle(temp, temp);//wandelt den Winkel in einen (Richtungs-)Vektor um //wenn also der Spieler genau in x-Richtung der Welt schauen sollte, hätte dieser Vektor die Werte (1,0,0), wenn wir den temp.pan nicht nochmal um 180 Grad gedreht hätten, so ist er jetzt (-1,0,0) vec_scale(temp, 100);//skaliert Richtungsavektor auf 100 temp.z = 50;//setzt die Höhe unabhängig aller vorherigen Änderungen auf einen festen Wert vec_add(temp, my.x);//addiert den Vektor zur Position des Spielers vec_set(camera.x, temp);//übergibt die Werte an die Kamera
Mit einer vergleichbaren Aktion versetzt Du den Punkt auf den die Kamera schauen soll neben den Spieler: vec_set(temp, my.pan); temp.pan += 90;//Dreh den Winkel so, dass er zur Seite des Spielers schaut vec_for_angle(temp, temp);//wnadele den Winkel in einen Vektor um vec_scale(temp, 20); vec_add(temp, my.x);//addiert die position des Spielers zum Vektor vec_sub(temp, camera.x);//soll die Richtung von Kamera zur Position neben dem Spieler geben (vielleicht ergibt es aber genau die umgekehrte Richtung, bin mir jetzt nicht sicher) vec_to_angle(temp, temp);//wandelt den Richtungsvektor in einen Winkel um vec_set(camera.pan, temp);//übergibt den Winkel an die Kamera
|
|
|
Re: 3rd Person Kamera
[Re: Schneaf]
#286344
08/24/09 20:01
08/24/09 20:01
|
Joined: Aug 2009
Posts: 3
Schneaf
OP
Guest
|
OP
Guest
Joined: Aug 2009
Posts: 3
|
Hi! Also ich bin diesen Code jetzt durchgegangen und habe festgestellt, das der Code zwar das hinbekommt was ich möchte, allerdings nur wenn ich die Bewegung der Maus vernachlässige, sprich der Charakter in eine Richtung schaut. Ich habe daraufhin meine Code Variante nochmal untersucht und bin zu dem Ergebnis gekommen, das ich die komplett selbe Kameraführung mit nur 2 zeilen Code bekomme, die da wären:
vec_set(camera.x, vector(my.x + fcos(my.pan,-100), my.y + fsin(my.pan,-100), my.z + 50));
vec_add(camera.x,vector(0,50,0));
Allerdings ist mein Ergebnis noch immer nicht zufriedenstellend. Da sich die Kamera eigenartig mitdreht, sobald ich mit der Maus in eine andere Richtung schauen möchte. Sie kreist irgendwie um den Spieler herum. (Das selbe Problem ist auch bei deinem Skriptvorschlag zu sehen gewesen, ich hätte gern ein Video gemacht aber ich kenn mich mit diesen encodern nicht aus und für 12 Sekunden lade ich kein 60MB file hoch :P) Um vielleicht zu verstehen was ich erreichten möchte, der sollte sich dieses Gameplay Video zu Dead Space ansehen. So sollte mein Kamera Code in etwa funktionieren: (man beachte die nicht zentrierte Player Entity) Dead Space Gameplay Hoffe ihr könnt mir weiterhelfen. Mfg Schneaf
|
|
|
|