SA-MP Forums Archive
[Tutorial] How to make a rotating camera on class selection - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Tutorials (https://sampforum.blast.hk/forumdisplay.php?fid=70)
+---- Thread: [Tutorial] How to make a rotating camera on class selection (/showthread.php?tid=291910)

Pages: 1 2


How to make a rotating camera on class selection - Lorenc_ - 22.10.2011


A tutorial to creating camera rotating
Why? What? Why'd you make this?

Out of boredom, I decided to make a class rotating camera tutorial. Would be nice for A/D servers to have such a feature.

What you'll need in this tutorial: Okay, note that this is not even close to what Dice7 wrote a long time ago on his class rotating camera selection. So yeah, don't say it is.

The camera rotates around the player and goes by the circumference of this circle. Some options are tweak-able to adjust the camera though you must get rid of your current camera inside of your gamemode before using.

Basic structure - Diagram


Lets script!
Variables
Using variables/constants looks more neater than defining for me (yes, I'm creating some 32 bit variables facepalm.jpg)
pawn Code:
/* ** Server Data ** */
const // Constant values, you may change it to "new" if they're going to be modified once rotating.
    Float: spawnX = 0.0,     // The SPAWN X you're willing to work from
    Float: spawnY = 0.0,     // The SPAWN Y you're willing to work from
    Float: spawnZ = 5.0,     // The SPAWN Y you're willing to work from
    Float: camRadius = 20.0, // The radius of the camera rotating
    Float: camSpeed  = 1.25, // The speed of the camera moving around. MUST NOT BE NULL; IT WONT MOVE IF SO!
    Float: camHeight = 6.0   // The height of the camera once moving!
;

/* ** Player Data ** */
new
    prc_Timer                   [MAX_PLAYERS],  // The timer for the movement.
    bool: prc_Moving            [MAX_PLAYERS],  // Check if the player is moving his camera
    Float: prc_Degree           [MAX_PLAYERS]   // The degree counter to show which the player is on.
;

forward MoveCamera(playerid); // We'll add this here to prevent future warnings..
OnPlayerRequestClass
pawn Code:
public OnPlayerRequestClass(playerid, classid)
{
    SetPlayerPos(playerid, spawnX, spawnY, spawnZ); // Set the player at those 3 const spawn values from before.
   
    if(prc_Moving[playerid] == false) // Check whether the camera is already set.
    {
        prc_Degree[playerid] = 0; // Reseting the variable
        prc_Timer[playerid] = SetTimerEx("MoveCamera", 75, true, "d", playerid); // Setting the timer
        prc_Moving[playerid] = true; // okay, now we're going to activate the moving variable
    }
    return 1;
}
Camera movement
pawn Code:
public MoveCamera(playerid) // The core of the movement
{
    static // Static for the repeation :O
        Float: nX,  // The newX
        Float: nY   // the newY
    ;
    if(prc_Moving[playerid] == false) // check whether the timer is activated and the variable isn't.
    {
        KillTimer(prc_Timer[playerid]); // Killing the timer, ofc we don't want a 75 ms timer always running.
        prc_Degree[playerid] = 0; // Reseting the variable
    }
    if(prc_Degree[playerid] >= 360) prc_Degree[playerid] = 0; // If the rotation is past 360, reset to 0 (looks more neater)
    prc_Degree[playerid] += camSpeed; // For some smooth rotation, I'm using 1.25
   
    nX = spawnX + camRadius * floatcos(prc_Degree[playerid], degrees);
    nY = spawnY + camRadius * floatsin(prc_Degree[playerid], degrees);
   
    // So, we're going to get the spawn axis and add the radius in to them.
    // Then we use the trignometric functions to apply such angles to the movement
    // making it look nice.
    SetPlayerCameraPos(playerid, nX, nY, spawnZ + camHeight); // Setting the Camera position around the player
    SetPlayerCameraLookAt(playerid, spawnX, spawnY, spawnZ); // Looking at the player position from there :)
    SetPlayerFacingAngle(playerid, prc_Degree[playerid] - 90.0); // to make it face the camera :)
    return 1;
}
OnPlayerDisconnect
pawn Code:
public OnPlayerDisconnect(playerid, reason)
{
    if(prc_Moving[playerid] == true)
    {
        KillTimer(prc_Timer[playerid]); // Killing the timer, ofc we don't want a 75 ms timer always running.
        prc_Degree[playerid] = 0; // Reseting the variable
        prc_Moving[playerid] = false; // Reseting the variable
    }
    return 1;
}
OnPlayerSpawn
pawn Code:
public OnPlayerSpawn(playerid)
{
    if(prc_Moving[playerid] == true)
    {
        KillTimer(prc_Timer[playerid]); // Killing the timer, ofc we don't want a 75 ms timer always running.
        prc_Degree[playerid] = 0; // Reseting the variable
        prc_Moving[playerid] = false; // Reseting the variable
        SetCameraBehindPlayer(playerid); // Preventing bugs from appearing.
    }
    return 1;
}
Screenshots
I rather have screenies than a video, since ******* wrecks the video quality for me - Uploaded with imageShack, sorry for people that cannot view it!




Download

Example gamemode with the default structure

Problems?
If there is any problems which mostly said not to be, please report them and I'll fix them.


Re: How to make a rotating camera on class selection - ©•Riddy•© - 22.10.2011

Looking good Lorenc, Gonna use it on BlackOps or it is on? :P

Basic tutorial, could help me in the future


Re: How to make a rotating camera on class selection - Lorenc_ - 22.10.2011

Quote:
Originally Posted by ©•Riddy•©
View Post
Looking good Lorenc, Gonna use it on BlackOps or it is on? :P

Basic tutorial, could help me in the future
Yeah I might for 0.3d, basically rotating the player just to see how his player looks
Still have a lot to improve on that gamemode for 0.3d, hoping for it to be the most epic/realistic CoD server around (I would say yes in realism of the server between the actual blackops game)

Thanks for the comment Riddy


Re: How to make a rotating camera on class selection - Xx_OutLawZ_xX - 22.10.2011

Looks good


Re: How to make a rotating camera on class selection - vassilis - 22.10.2011

Hmm its good however you could explain better.Btw its good tutorial GG.


Re: How to make a rotating camera on class selection - Max_Coldheart - 22.10.2011

Looking good once again ! Good job.


Re: How to make a rotating camera on class selection - SmiT - 22.10.2011

Nice one. Good job.


Re: How to make a rotating camera on class selection - System64 - 22.10.2011

wow awesome, I was always wondering how to create something like this


Re: How to make a rotating camera on class selection - Twizted - 22.10.2011

Awesome work Lorenc.


Re: How to make a rotating camera on class selection - Lorenc_ - 22.10.2011

Quote:
Originally Posted by vassilis
View Post
Hmm its good however you could explain better.Btw its good tutorial GG.
IF YOU DON'T KNOW TRIGNOMETRY THEN READ THIS


Re: How to make a rotating camera on class selection - vassilis - 22.10.2011

lmao of course i know trigonometry and i am not talking about that i am talking about that,however its a very good tutorial which is full of experience


Re: How to make a rotating camera on class selection - juraska - 22.10.2011

The example gamemode with the default structure is doesn't work!
btw: nice tutorial, I just looking tutorial like that

EDIT: That's works - thanks


Re: How to make a rotating camera on class selection - Lorenc_ - 22.10.2011

Quote:
Originally Posted by juraska
View Post
The example gamemode with the default structure is doesn't work!
btw: nice tutorial, I just looking tutorial like that

EDIT: That's works - thanks
lol

Thanks for the comments.


Re: How to make a rotating camera on class selection - vassilis - 22.10.2011

Lorenc i added your account system to the useful tutorials topic
Regards,



Re: How to make a rotating camera on class selection - Luis- - 23.10.2011

Thanks for this, been wanting to know how to do it for quite a while.


Re: How to make a rotating camera on class selection - Lorenc_ - 26.10.2011

No problem, suggestions are welcome :3


Re: How to make a rotating camera on class selection - Niko_boy - 26.10.2011

Great Job
When i firstly Look on it , i thought its the old topic which other guy made.
But when i read it I came to know that it even looks better
Keep It Up !!



Re: How to make a rotating camera on class selection - Michael@Belgium - 26.10.2011

Awesome ! New idea for my future server


Re: How to make a rotating camera on class selection - Aira - 04.11.2011

Nice man! But can i ask something? Why does the player move too?


Re: How to make a rotating camera on class selection - Lorenc_ - 19.11.2011

Quote:
Originally Posted by [RaZ]Hal_Moore
View Post
Nice man! But can i ask something? Why does the player move too?
I just wanted something fancy going on though you can remove that by deleting the line "SetPlayerFacingAngle"