Aloha,
Hier seit langer Zeit ein weiteres Tutorial von mir, es geht umd die KameraPosition bei der Skinauswahl,
In diesem Tutorial erkläre ich euch was die einzelnen Codeteile machen und wie man sie verändern kann!
Grundlegendes
Als einfachstes und Grundsätzlichstes beispiel für die Anwendung von SetPlayerCameraLookAt und SetPlayerCameraPos ist die Skinauswahl.
In einem leeren Gamemode (new.pwn) Sind die wiefolgt:
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
Zunächstmal wird das public OnPlayerRequestClass aufgerufen wenn der Spieler in die Skinauswahl kommt, daraufhin laufen die einzelnen Teile von oben nach unten ab.
SetPlayerPos(playerid, X, Y, Z); | Setzt die Figur des Spielers an einen Punkt der durch die 3 Koordinaten bestimmt ist.
SetPlayerCameraPos(playerid, X, Y,Z); | Setzt die Kamera Position an einen Punkt der ebenfalls durch die 3 Koordinaten bestimmt wird.
SetPlayerCameraLookAt(playerid, X, Y, Z,); | Setzt den Punkt zumdem die Kamera blicken soll, auch hier mit den 3 Koordinaten.
Soweit ist das nochnicht ganz verständlich, aber dazu kommen wir ja nun, standart, wie oben im Code zu sehen, würde die Skinauswahl so aussehen:
Nicht schön, man sieht auch keine Skins, somit kann man das nicht als Skinauswahl benutzen, aber das ändern wir jetzt!
Wie erstelle ich eine neue Skinauswahl Ansicht?
Zunächst suchen wir mal einen einfachen Ort, wie wärs mit dem hier?
Nun , erinnern wir uns, brauchen wir 3 mal 3 Koordinaten.
Fangen wir mal mit der ersten an, das war SetPlayerPos.
Wie erwähnt setzt man damit die Spielerposition fest, stellen wir unseren mal einfach hier in die Mitte mit Blickrichtung nach dort oben.
Diese Position speichern wir mit dem Befehl /save [Kommentar]
Hinweis: Das Kommentar ist dabei Optional und muss nicht gemacht werden, der übersichthalber solltet ihr es aber trotzdem benutzen, ihr seht gleich warum
Achtung: Der Befehl /save ist in SA-MP verbaut, ihr müsst ihn nicht scripten
Nun haben wir die Spielerposition gespeichert, jetzt gehen wir zum nächsten, das war SetPlayerCameraPos
Hm da wir unseren Skin ja voll im Bild haben wollen, stellen wir die Kamera doch am besten hier oben hin
Und wieder speichern wir mit dem /save Befehl.
Und zum Schluss die dritte und letzte Position, SetPlayerCameraLookAt!
Sie bestimmt den Punkt zudem die Kamera schauen soll, da wir unseren Skin sehen wollen setzen wir den Punkt am besten wohin?
Hinter den Spieler, sodass der voll im Bild ist, das wäre hier bei uns, sagen wir hier:
Wunderbar! Nun haben wir alle 3 Koordinaten, doch was haben wir jetzt eigentlich gespeichert?
Fassen wir die Punkte nochmal zusammen um einen Überlick zu gewinnen
Die Kamera schaut also von oben auf den Punkt dort unten. Sich das vorzustellen ist vllt schwer, aber der Screen am ende wird es euch verdeutlichen!
Einfügen der neuen Koordinaten
Jetzt geht es an den Code Doch moment wo finden wir unsere Positionen?
Sie liegen je nach Betriebsystem unter Eigene Dateien oder Dokumente > GTA San Andreas User Files > SAMP > savedpositions.txt
Nun sehen wir warum ihr kommentare benutzen solltet, oder hättet ihr sagen können was nun was ist?
Nunentnehmen wir den Code, fangen wir bei SetPlayerPos an, was brauchen wir?
SetPlayerPos(playerid, X, Y, Z);
und was haben wir ?
AddPlayerClass(287,-1946.2579,487.7636,31.9688,87.9005,0,0,0,0,0,0); // SpielerPosition
Hm das sind viele Zahlen, welche nehmen wir da? Fragen wir die allwissende Wiki
Aha! Also nehmen wir für SetPlayerPos diese hier:
AddPlayerClass(287,-1946.2579,487.7636,31.9688,87.9005,0,0,0,0,0,0); // SpielerPosition
Da wir bei den anderen beiden auch nur die X Y Z Koordinaten brauchen können wir diese auch aus den jeweilgen Save Zeilen rauskopieren!
Nun einfach alle der reihe nach einsetzen!
Aus:
AddPlayerClass(287,-1946.2579,487.7636,31.9688,87.9005,0,0,0,0,0,0); // SpielerPosition
AddPlayerClass(287,-1961.7993,486.6956,35.1719,269.2988,0,0,0,0,0,0); // KameraPosition
AddPlayerClass(287,-1936.5033,487.7016,31.9688,90.4072,0,0,0,0,0,0); // KameraAnschauPunkt
Wird:
-1946.2579,487.7636,31.9688
-1961.7993,486.6956,35.1719
-1936.5033,487.7016,31.9688
Und eingesetzt:
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, -1946.2579,487.7636,31.9688);
SetPlayerCameraPos(playerid, -1961.7993,486.6956,35.1719);
SetPlayerCameraLookAt(playerid, -1936.5033,487.7016,31.9688);
return 1;
}
Nun schauen wir uns das Ergebniss an Im Spiel an
Na das schaut doch schon gut aus, erkennt ihr jetzt den zusammenhang zwischen SetPlayerCameraPos und SetPlayerPos?
Seht euch die Bilder nocheinmal an falls es nochnicht klick macht, etwas vorrausschauendes denken brauch man hierbei schon...
Aber moment der Spieler schaut uns garnicht an? Das lässt sich ändern! Wie? Indem wir die Blickrichtung ändern !
Der Befehl dafür lautet:
SetPlayerFacingAngle(playerid,Angle); | Angle ist ein Komma wert der von 0 - 360 geht denn der spieler kann sich nur im kreis drehen (wie auch sonst)
Und da ein Kreis 360 Grad hat ist 360 der Maximale wert! Doch wie finden wir jetzt die richtige Richtung raus ?
Das brauchen wir garnichtmehr, denn erinnert ihr euch daran was ich oben geschrieben habe?
Mit dem Speichern von "SpielerPosition" haben wir die blickrichtung direkt mitgegespeichert und wenn wir uns richtig hingestellt haben, können wir diese auch nehmen!
Schauen wir nochmal in die Wiki, dort ist es als "winkel" bezeichnet, und der steht neben der Z Koordinate, also rauskopieren aus dem Save:
AddPlayerClass(287,-1946.2579,487.7636,31.9688,87.9005,0,0,0,0,0,0); // SpielerPosition
Und in den Befehl Einfügen und der Code sollte so aussehen:
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, -1946.2579,487.7636,31.9688);
SetPlayerCameraPos(playerid, -1961.7993,486.6956,35.1719);
SetPlayerCameraLookAt(playerid, -1936.5033,487.7016,31.9688);
SetPlayerFacingAngle(playerid,87.9005);
return 1;
}
Und das Ergebniss Ingame kann man sich denke ich vorstellen:
Nagut er steht etwas weit weg aber durch das anpassen der Koordinaten könnt ihr das ja ändern wie ihr wollt
Das wars, ein relativ langes Tutorial wie ich finde, aber da sieht man mal wieviel wissen und aufwand hinter sowas simplem wie ner KameraAuswahl steckt...
Ich hoffe manchen ist das nun etwas klarer geworden
Falls fragen sind, immer her damit
mfg INk