Download the source code used here (mirror)
First of all we have direct access to the actual active camera using the following object:
Game.CurrentCamera
With this object we can obtain useful info about actual active camera:
Game.DefaultCamera
The problem with this object is that it disappear (= nothing) when an ped is set as targeted by player when player is unarmed, so, if you want use this camera be careful and make the Exists(Game.DefaultCamera) check before use.
GET_GAME_CAM
This native method will return the game camera, very useful when we need to find the actual game camera doesn't matter if we have a gun or not:
Creating a camera
To create a camera we need an object of type camera and we need to create a new instance of it:
Now to see the view of this camera we need to Activate it:
To demonstrate some camera control let's create an free camera with keyboard control, when i press move keys the camera will move forward and backward, when i press + and - camera will zoom in and out and when i press left/right/up/down camera will change direction:
Basically what i'm changing here is Position, Rotation and FOV.
An interesting method to use is the LookAt, we can set the camera to look at a Ped, Object, Vehicle or a single position, when we set this we can't control the camera direction or rotation anymore:
To obtain control over Direction and Rotation again we need to call UNPOINT_CAM method:
Another cool method to use is the SET_CAM_SHAKE:
First param is the camera, we can shake the game camera too but before we need to call CAM_PROCESS and specify game.default camera as the param.
Second param seems to be the level of movement, from 1 to 8
Third param is the time in milliseconds, -1 will result in a shake of approximated 1 second
This is what you need to do to shake the game default camera:
Attaching a camera
We can attach camera using the following methods:
ATTACH_CAM_TO_OBJECT
ATTACH_CAM_TO_PED
ATTACH_CAM_TO_VEHICLE
ATTACH_CAM_TO_VIEWPORT
After attaching the camera we can set the offset from the attach point using this method:
SET_CAM_ATTACH_OFFSET
To make the attach be relative to the object we need to call this method:
SET_CAM_ATTACH_OFFSET_IS_RELATIVE
To remove the attach we use UNATTACH_CAM
Let's make an example of this attach, let's attach the camera to player current vehicle, if player aren't in a car let's attach the camera to him:
Now, in a tick we need to set the camera direction or rotation:
With some coding and imagination you can easily create a basic first person camera.