Skip to content

llGetCameraPos

vector llGetCameraPos()

Returns the current camera position for the agent the task has permissions for.

Returns the position of the camera, of the user that granted the script PERMISSION_TRACK_CAMERA. If no user has granted the permission, it returns ZERO_VECTOR.

This example demonstrates a camera follower script that uses llGetCameraPos to track the agent’s camera position and adjust the object’s position accordingly.

//Camera Follower Script
//llGetCameraPos & llGetCameraRot Example
//By Nika Rugani
integer perm_track = 0x400;
float second_check = 0.1;
vector object_offset = <2,0,0>; //Offset of the cameras position where the object will set itself
integer die_channel = 0;
string die_command = "/die";
quickPosRot(vector pos, rotation rot)
{//This way you don't have the 0.2 second sleeps from llSetPos and llSetRot
llSetLinkPrimitiveParamsFast(LINK_THIS, [PRIM_POSITION, pos, PRIM_ROTATION, rot]);
}
default
{
on_rez(integer a)
{
llResetScript();
}
state_entry()
{
llRequestPermissions(llGetOwner(), perm_track);
}
run_time_permissions(integer permission)
{
if(permission == perm_track)
{
llSetTimerEvent(second_check);
llListen(die_channel, "", llGetOwner(), "");
}
else
{
//llResetScript(); //Remove comment to loop the process of requesting permissions if user deny's permission
//llDie(); //Remove comment to kill the object if user deny's it
}
}
listen(integer channel, string name, key id, string str)
{
str = llToLower(str);
if(str == die_command)
{
llDie();
}
}
timer()
{
vector c_pos = llGetCameraPos(); //Get Users Camera Position
rotation c_rot = llGetCameraRot(); //Get Users Camera Rotation
c_pos = (c_pos+object_offset*c_rot); //Apply the offset to the position
quickPosRot(c_pos, c_rot); //EXECUTE ORDER!
}
}
  • This function may exhibit unexpected behavior when the camera is positioned too far from the agent.