LlGetCameraPos
Looking for the current API? Open the llGetCameraPos reference →
Return value notes
Returns a vector that is the current camera position for the agent the task has permissions for.
Caveats
- Seems to act weird when the camera gets too far from the agent.
Examples
//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!
}
}See also: functions
Additional wiki content
LSL Function/permission:
{{LSL_Function/permission|PERMISSION_TRACK_CAMERA}}Original wiki source
Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.