Koordinate berechnen

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
  • Guten Abend zusammen,


    ich bin momentan dabei, ein Autohaus zu coden.
    Dabei habe ich nun ein kleines Problem.


    Ich denke mal, hierbei handelt es sich sogar um einfache Mathematik.
    Trotzdem hapert es bei mir.


    Ich möchte gerne eine Kamerafahrt per Interpolation (sagt man das so?) erstellen, welche von der aktuellen Fahrzeug-Sicht des Spielers, etwas weiter vor das Fahrzeug geht, und die Kamera in Richtung Frontscheinwerfer lenkt.


    Skizze:


    Da hapert es grade komplett bei mir.
    Momentan ist es so:

    new Float:Pos[3];
    GetVehicleModelInfo(VehicleShop[i][modelid], VEHICLE_MODEL_INFO_SIZE, Pos[0], Pos[1], Pos[2]);
    InterpolateCameraPos(playerid, VehicleShop[i][aPosx], VehicleShop[i][aPosy], VehicleShop[i][aPosz], VehicleShop[i][aPosx]+Pos[0], VehicleShop[i][aPosy]-Pos[1], VehicleShop[i][aPosz], 2500, CAMERA_MOVE);
    InterpolateCameraLookAt(playerid,VehicleShop[i][aPosx]+Pos[0],VehicleShop[i][aPosx]-Pos[1],VehicleShop[i][aPosx],VehicleShop[i][aPosx],VehicleShop[i][aPosx],VehicleShop[i][aPosx],2500,CAMERA_MOVE);


    Dabei schwenkt die Kamera allerdings manchmal in komplett andere Richtungen.


    Ich hoffe mir kann jemand bei meinem Problem helfen.


    Vielen Dank! :thumbup:




    e: Rechtschreibfehler
    e2: PWN-Code angepasst

  • Folgendes Prinzip: InterpolateCameraPos Problem.


    Von diesem Code nimmst du die Pos neben dem Spieler, sprich den Abstand zur Seite und die Endposition (vorne). Aus dem Abstand zur Seite kannst du die Endposition berechnen.


    Deine Interpolation beginnt an der Position des Fahrzeugs und endet an der Endposition vorne.


    Deine Interpolation Look At beginnt an der Endposition vorne und endet an einer neuen Position, die gleich berechnet wird wie die Endposition, nur dass der Abstand zur Seite in die andere Richtung geht (negativ) und der Abstand nach vorne etwas weniger ist (möglicherweise kannst du das ja mit der Größe des Fahrzeugs berechnen, oder einfach einen festen Wert nehmen, das macht keinen großen Unterschied).


    Falls dazu Fragen sind, einfach fragen.

  • Ich glaube ich habe da etwas nicht ganz verstanden an dem Code. :D


    Schlag mich jetzt bitte nicht, ich habe es jetzt so:



    new Float:x, Float:y, Float:z, Float:a;
    GetVehicleZAngle(vehicleid, a);
    GetPlayerPos(playerid, x, y, z);
    x += (5.0 * -floatcos(a, degrees));
    y += (5.0 * -floatsin(a, degrees));
    new Float:pos1x, Float:pos2x, Float:pos1y, Float:pos2y;
    pos2x = x + (70.0 * floatsin(-a, degrees));
    pos2y = y + (70.0 * floatcos(-a, degrees));
    pos1x = x - (-20.0, floatsin(-a, degrees));
    pos1y = y - (-20.0, floatcos(-a, degrees));

    GetPlayerPos(playerid, x, y, z);
    InterpolateCameraPos(playerid, pos1x, pos1y, z, pos2x, pos2y, z, 3000, CAMERA_MOVE);
    InterpolateCameraLookAt(playerid, x, y, z, x + (300.0 * floatsin(-a, degrees)), y + (300.0 * floatcos(-a, degrees)), z, 3000, CAMERA_MOVE);


    Die Kamerafahrt fährt erst da hin, wo ich es haben will, und fliegt dann allerdings weiter.

  • Allerdings fährt die Kamera jetzt erst links ans Auto (gerade) und dann fährt sie vor das Auto.


    Ich weiß nicht genau wie du es haben willst, aber so entspricht es in etwa deinem Bild:
    new Float:x, Float:y, Float:z, Float:a;
    GetVehicleZAngle(vehicleid, a);
    GetPlayerPos(playerid, x, y, z);
    x += (5.0 * -floatcos(a, degrees));
    y += (5.0 * -floatsin(a, degrees));
    new Float:pos2x, Float:pos2y;
    pos2x = x + (7.0 * floatsin(-a, degrees));
    pos2y = y + (7.0 * floatcos(-a, degrees));


    GetPlayerPos(playerid, x, y, z);
    InterpolateCameraPos(playerid, x, y, z+1, pos2x, pos2y, z, 3000, CAMERA_MOVE);
    InterpolateCameraLookAt(playerid, pos2x, pos2y, z+1, x + (3.0 * floatsin(-a, degrees)), y + (3.0 * floatcos(-a, degrees)), z, 3000, CAMERA_MOVE);


    Von der Sicht des Autos aus nach vorne, dann dreht sie und schaut das Licht an, von etwas seitlich.

  • Jetzt habe ich ein anderes Problem.
    Die Kamera geht nun erst ins Auto rein und fährt dann dahin, wo die End-Position ist.


    Müsste jetzt ein Video hochladen, du könntest aber auch kurz bei dir selber einen Command mit dem Code von dir machen und dich in ein Auto setzen und den Command eingeben.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • // Edit
    Habs jetzt, hast du evtl. doch eine Rechnung für die Kamera direkt von vorne etwas in der Luft?
    Etwa 3-4 Meter vor den Scheinwerfern und Kamera auf Scheinwerfer-Höhe.


    Wäre dir dankbar! =)

    Einmal editiert, zuletzt von hav0K~ ()