Ne, stört mich nicht. Ich hoffe ihr findet durch:
if(cam_type != 2 && pause == 1 && zoomvorgang == 0 && mouse_right != 1 )
{
vec_set(camera.x,player.x);
vec_add(camera.x,abs_cam_pos);
if(mouse_pos.y-y_view_achse+mouse_spot.y != 0 && mouse_pos.x-640 != 0)
{
if(mouse_pos.y-y_view_achse+mouse_spot.y > 0)
{
player.pan = atan((mouse_pos.x-640+mouse_spot.x)/(mouse_pos.y-y_view_achse+mouse_spot.y))-90+kameradrehung;
}
else
{
player.pan = atan((mouse_pos.x-640+mouse_spot.x)/(mouse_pos.y-y_view_achse+mouse_spot.y))-270+kameradrehung;
}
}
}
Alle Konditionen in dem If-Befehl sind erfüllt. Die ersten beiden vec_set und vec_add Befehle können vernachlässigt werden, dabei handelt es sich um die Drehung der Kamera um den Spieler selbst. Nur der letze Block ist jetzt entscheidend. Als erstes wird nachgesehen, dass niemals durch null geteilt wird, denn sonst bekäme man die ein oder andere Fehlermeldug während dem Spiel. Danach wird geschaut, ob sich der Mauscursor über oder unterhalb des Spielers befindet. Man muss sich immer eine horizontale Linie durch den Player vorstellen. Dessen Höhe wird durch die Variable y_view_achse angegeben. Das hat alles mit dem zuvor angesprochenen Koordinatensystem zu tun, das i Gedanken erstellt wird.. Nach der Entscheidung jedenfalls wird der atan ausgeführt um den Winkel, um den sich gedreht werden muss zu erfahren. Wenn sich der mousecursor oberhalb des Spielers befindet wird eigentlich das selbe gemacht, nur um 180 grad gespiegelt. Die -90 Grad haben damit zu tun, dass ich das Modell in MED um 90 verkehr herum gebaut habe
. +kameradrehung gibt an, um Wieviel grad sich die kamera um den Spieler gedraht hat. Was mich wundert ist, dass die Variablen Kameradrehung und y_view_achse den selben wert annehmen wenn man das Haus verlässt, wie den den man in der Welt hatte als alles noch funktionierte.
Ich hoffe ihr versteht mich soweit...