InterpolateCameraPos Problem.

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 Tag,
    und zwar möchte ich, dass man mit der Funktion InterpolateCameraPos einen Radfahrer beim Connecten(Bot) mit verfolgt.
    Klar kann man den Spieler spectaten, doch diese Sicht möchte ich nicht..., ich habe schon was gebastelt, doch die Kamera bleibt irgendwie nur an einer Stelle stehen und bewegt sich minimal..
    Da ich mich mit der Funktion noch nie beschäftigt habe, bräuchte ich eure Hilfe.


    Mein derzeitiger Code:
    ForAllPlayers(i)
    {
    GetPlayerName(i,botname,sizeof(botname));
    if(!strcmp(botname,"Intro_BMX",true))
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(i,x,y,z);
    InterpolateCameraPos(playerid,x,y,z,x+1,y,z,14010,CAMERA_MOVE);
    InterpolateCameraLookAt(playerid,x,y,z,x+1,y,z,14010, CAMERA_MOVE);
    }
    }

  • Beitrag von Jeffry ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • ForAllPlayers(i)
    {
    GetPlayerName(i,botname,sizeof(botname));
    if(!strcmp(botname,"Intro_BMX",true))
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(i,x,y,z);
    new Float:cx,Float:cy,Float:cz;
    GetPlayerCameraPos(playerid,cx,cy,cz);
    InterpolateCameraPos(playerid,cx,cy,cz,x+1,y,z,14010,CAMERA_MOVE);
    InterpolateCameraLookAt(playerid,cx,cy,cz,x+1,y,z,14010, CAMERA_MOVE);
    }
    }


    Ich habe mich etwas falsch ausgedrückt. So war das gemeint.


  • Jetzt fliegt die Kamera von der Spieler Position zum Bot..., ich glaube du hast es falsch verstanden.
    Der Radfahrer fährt eine Strecke ab, connectet der Spieler, soll dieser den Radfahrer mit Hilfe der Funktion InterpolateCameraPos & InterpolateCameraLookAt mit verfolgen..., so wie bei den GTA Intros.

  • Es ist mir schon klar, dass die Kamera jetzt direkt zum Bot fliegt. Soll die Kamera immer ein paar Meter hinter dem Bot bleiben, oder wie genau meinst du das? Falls ja, müsstest du die Position X Meter hinter dem Bot rausfinden (http://forum.sa-mp.de/gta-multiplayer-mods/san-andreas-multiplayer/scripting-base/18-nützliche-codeschnipsel-56#post1890617) (hinter = negativer Abstand). Die Kamera interpolierst du dann zu dieser Position, und machst LookAt auf die Position des Bots.

  • Es ist mir schon klar, dass die Kamera jetzt direkt zum Bot fliegt. Soll die Kamera immer ein paar Meter hinter dem Bot bleiben, oder wie genau meinst du das? Falls ja, müsstest du die Position X Meter hinter dem Bot rausfinden (http://forum.sa-mp.de/gta-multiplayer-mods/san-andreas-multiplayer/scripting-base/18-nützliche-codeschnipsel-56#post1890617) (hinter = negativer Abstand). Die Kamera interpolierst du dann zu dieser Position, und machst LookAt auf die Position des Bots.


    Ab 0:49


    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.


    - Push

  • Da musst du die Position neben dem Bot herausfinden, das machst du mit Sinus und Cosinus.
    Gleiches Prinzip wie hier: http://forum.sa-mp.de/gta-multiplayer-mods/san-andreas-multiplayer/scripting-base/18-nützliche-codeschnipsel-56#post1890617


    Nur dass du eben nicht die Position vor dem Spieler sondern daneben willst, da musst due sin/cos Funktionen ändern, ich kann es grade nicht testen, versuche dich daran mal selbst. Wenn du es bis Sonntag nicht schaffst, dann kann ich es am Abend für dich machen. (Schick mir eine PN mit dem Link zu dem Thema hier dann)


    Die Kamera muss sich dann von GetPosNebenSpieler zu GetPosVorSpieler von der pos neben Spieler bewegen.


    _____________________________________________________________________________________________________________________


    EDIT:


    //pID = Spieler dessen Kamera sich bewegt
    //playerid = Bot
    new Float:a, Float:x, Float:y, Float:z;
    if(IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
    else GetPlayerFacingAngle(playerid, a);
    GetPlayerPos(playerid, x, y, z);
    x += (5.0 * -floatcos(a, degrees)); //5.0 = Abstand zur Seite (wenn du die andere Seite willst, mach das "-" weg, bei beiden.
    y += (5.0 * -floatsin(a, degrees));
    new Float:pos1x, Float:pos2x, Float:pos1y, Float:pos2y;
    pos2x = x + (70.0 * floatsin(-a, degrees)); //End-Position (vorne)
    pos2y = y + (70.0 * floatcos(-a, degrees)); //70.0 = Abstand vom Bot nach vorne
    pos1x = x - (-20.0 * floatsin(-a, degrees)); //Start-Position (hinten)
    pos1y = y - (-20.0 * floatcos(-a, degrees)); //-20.0 = Abstand vom Bot nach hinten (- = nach vorne)


    GetPlayerPos(playerid, x, y, z);
    InterpolateCameraPos(pID,pos1x,pos1y,z,pos2x,pos2y,z,14010,CAMERA_MOVE);
    InterpolateCameraLookAt(pID,x,y,z,x + (300.0 * floatsin(-a, degrees)),y + (300.0 * floatcos(-a, degrees)),z,14010, CAMERA_MOVE); //300.0 = Abstand den sich die Kamera-LookAt Position verändert.


    Und es sieht so aus:

    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.


    Sieht nicht genau gleich aus, aber das kannst du mit den Abständen so einrichten wie du das willst. Ich finde es so für das Motorrad ganz gut.

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()