In welche Richtung guckt die Kamera eines Spielers

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo,


    ich habe folgendes Problem:


    Ich möchte möchte herausfinden in welche Richtung ein Spieler grade schaut.
    Also nicht die FacingAngle der "Spielfigur", sondern die Kamera.
    Es gibt ja die Funktion GetPlayerCameraFrontVector aber ich weiß nicht wie ich da
    die horizontale Gradzahl herausbekommen soll.

    Beispiel:


    N * Punkt
    |
    |
    W-----Kamera-----O
    |
    |
    S


    Der Spieler hat seine Kamera auf diesen Punkt (*) gerichtet.
    Wie kann ich nun berechnen in welcher Richtung der Punkt liegt?
    Ich möchte lediglich eine Zahl in Grad, also von 0 - 360.


    Hat einer eine Idee? :)

  • Mhm, wenn mich nicht alles täuscht sieht das so aus:


    Code
    N = 0°
    O = 90°
    S = 180°
    W = 270°


    Bin mir nicht zu 100% sicher, kannste aber ja mal ausprobieren ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • :D Ja, die Gradzahlen kenne ich.


    Aber wie kann Abfragen in welche Richtung die Kamera grade schaut?
    Das muss mit GetPlayerCameraFrontVector gehen, aber ich weiß nicht wie man
    das errechnet. :o

  • Da steht doch ein ausführliches Beispiel :huh:


    if (!strcmp(cmdtext, "/test camera vector")) //aus dem Wiki
    {
    new
    Float:fPX, Float:fPY, Float:fPZ,
    Float:fVX, Float:fVY, Float:fVZ,
    Float:object_x, Float:object_y, Float:object_z;

    // Change me to change the scale you want. A larger scale increases the distance from the camera.
    // A negative scale will inverse the vectors and make them face in the opposite direction.
    const
    Float:fScale = 5.0;

    GetPlayerCameraPos(playerid, fPX, fPY, fPZ);
    GetPlayerCameraFrontVector(playerid, fVX, fVY, fVZ);

    object_x = fPX + floatmul(fVX, fScale);
    object_y = fPY + floatmul(fVY, fScale);
    object_z = fPZ + floatmul(fVZ, fScale);

    CreateObject(345, object_x, object_y, object_z, 0.0, 0.0, 0.0);

    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ich verstehe das aber nicht wirklich :o


    Hier als Beispiel:


    Dies ist ein Teil eines Befehls der das Fahrzeug stark beschleunigt.
    Damit das Fahrzeug in die Richtung beschleunigt wird in das es auch grade fährt,
    wird ja die VehicleZAngle abgefragt.


    Ich möchte aber nicht die Richtung des Fahrzeugs, sondern die Richtung in die die Kamera
    des Spielers schaut. Ich weiß aber nicht wie ich da GetPlayerCameraFrontVector verwenden
    soll und das dann so umrechne, dass ich es bei SetVehicleVelocity verwenden kann.


    new Float:vX, Float:vY, Float:vZ, Float:vA;
    new myCar = GetPlayerVehicleID(playerid);
    GetVehicleZAngle(myCar, vA);
    GetVehicleVelocity(myCar,vX,vY, vZ);
    SetVehicleVelocity(myCar, vX+=4 * floatsin(-vA, degrees), vY+=4 * floatcos(-vA, degrees), vZ);