[TUT]Rotace kamery

Sekcia určená pre programovací jazyk pawn.

[TUT]Rotace kamery

Poslaťod Iron[CZ] » Pon 09. Máj 2011 19:20:31

Zdravím, vytvořil jsem malou, ale zajímavou funkci, kterou můžete nastavit hráči kameru, která bude kroužit po kružnici kolem nějakého bodu. Tato funkce je dobrým příkladem propojení jazyka Pawn s matematickými goniometrickými funkcemi a jejich praktického využití.
Proměnné:
Kód: Vybrať všetko
new Float:CamX[MAX_PLAYERS_EX];
new Float:CamY[MAX_PLAYERS_EX];
new Float:Uhel[MAX_PLAYERS_EX];
new Float:CamZ[MAX_PLAYERS_EX];
new Float:DefaultX[MAX_PLAYERS_EX];
new Float:DefaultY[MAX_PLAYERS_EX];
new timer[MAX_PLAYERS_EX];
new bool:Casovac[MAX_PLAYERS_EX];

Samotná funkce:
Kód: Vybrať všetko
stock SetPlayerRotationCamera(playerid, Float:X, Float:Y, Float:Z, time)
{
   CamX[playerid] = X+40;
   CamY[playerid] = Y;
   Uhel[playerid] = 0.0;
   CamZ[playerid] = Z+20;
   DefaultX[playerid] = X;
   DefaultY[playerid] = Y;
   SetPlayerCameraPos(playerid, CamX[playerid], CamY[playerid], CamZ[playerid]);
   SetPlayerCameraLookAt(playerid, X, Y, Z);
   if (Casovac[playerid] == false)
   {
       Casovac[playerid] = true;
       timer[playerid] = SetTimerEx("RotationCamera", 25, true, "i", playerid);
       SetTimerEx("KonecRotace", time, false, "i", playerid);
   }
   return 1;
}

Rotace kamery a výpočet:
Kód: Vybrať všetko
public RotationCamera(playerid)
{
   new Float:PosX;
   new Float:PosY;
   PosX += (40 * floatcos(Uhel[playerid], degrees) + DefaultX[playerid]);
   PosY += (40 * floatsin(Uhel[playerid], degrees) + DefaultY[playerid]);
   SetPlayerCameraPos(playerid, PosX, PosY, CamZ[playerid]);
   SetPlayerCameraLookAt(playerid, DefaultX[playerid], DefaultY[playerid], CamZ[playerid]-20);
   if (Uhel[playerid] < 360)
   {
       Uhel[playerid]++;
   }
   else
   {
       Uhel[playerid] = 0.0;
   }
   return 1;
}

Vrácení zpět:
Kód: Vybrať všetko
public KonecRotace(playerid)
{
   KillTimer(timer[playerid]);
   SpawnPlayer(playerid);
   SetCameraBehindPlayer(playerid);
   Casovac[playerid] = false;
   return 1;
}

Předpokládám že forwardy si sami doplníte. Zde je malé video jako ukázka toho jak to vypadá: http://www.youtube.com/watch?v=5bJ03VDl7TU
Obrázok užívateľa
Iron[CZ]
Nováčik
Nováčik
 
Príspevky: 125
Registrovaný: Pon 19. Júl 2010 20:56:53
Bydlisko: Týniště nad Orlicí

Re: [TUT]Rotace kamery

Poslaťod SK_martin_SA » Pon 09. Máj 2011 19:51:39

Pekné, ale neviem či to využijem
SK_martin_SA
 

Re: [TUT]Rotace kamery

Poslaťod Iron[CZ] » Uto 10. Máj 2011 14:14:03

Je to spíš taková estetická záležitost pro nějaký prezentace míst nebo tak něco.
Obrázok užívateľa
Iron[CZ]
Nováčik
Nováčik
 
Príspevky: 125
Registrovaný: Pon 19. Júl 2010 20:56:53
Bydlisko: Týniště nad Orlicí


Späť na Pawn

Kto je on-line

Užívatelia prezerajúci fórum: Žiadny registrovaný užívateľ nie je prítomný a 0 hostia

cron