LlSetCameraParams

来自人工智能助力教育知识百科
Mkx讨论 | 贡献2020年8月22日 (六) 03:03的版本 (创建页面,内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}} {{函数详情 |函数名 = Function: llSetCameraParams( list rules ); |参数= 参数:• li…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

Template:Needs Translation/


函数名
Function: llSetCameraParams( list rules );
参数:• list rules – Format is [ rule1, data1, rule2, data2 . . . rulen, datan ]
返回值:一次设置多个相机参数。

要运行这个函数,脚本必须使用llRequestPermissions请求PERMISSION_CONTROL_CAMERA权限。

注意事项
摄像头控制目前(服务器1.38)只支持附件和你坐的对象。否则将导致在DEBUG_CHANNEL上显示错误。

如果代理最后使用的控件是脚本化的摄像机控件,则脚本化的摄像机参数将不会为代理设置。手动相机控制也会覆盖设置的参数。

 Permission
 不要依赖于权限的自动授予状态。始终使用run_time_permissions事件。
 如果脚本缺少权限PERMISSION_CONTROL_CAMERA,该脚本将在DEBUG_CHANNEL上大叫一个错误,操作失败(但脚本继续运行)。
 当化身从对象上站起或分离对象时,PERMISSION_CONTROL_CAMERA权限将自动撤销,并且任何脚本化的摄像机参数将自动清除。
示例
你可以在区域相对坐标中设置摄像机,也可以让摄像机跟随你的化身。

Region relative coordinates, an example:

lookAtMe( integer perms )
{
    if ( perms & PERMISSION_CONTROL_CAMERA )
    {
        vector camPos = llGetPos() + (relCamP * llGetRot() * turnOnChair) ;
        vector camFocus = llGetPos() ;
        llClearCameraParams(); // 将摄像头设置为默认
        llSetCameraParams([
            CAMERA_ACTIVE, 1, // 1 is active, 0 is inactive
            CAMERA_FOCUS, camFocus, // 地区的相对位置
            CAMERA_FOCUS_LOCKED, TRUE, // (TRUE or FALSE)
            CAMERA_POSITION, camPos, // 地区的相对位置
            CAMERA_POSITION_LOCKED, TRUE // (TRUE or FALSE)
        ]);
    }
}

注意焦点和位置都是锁定的。第一个例子使相机从camPos看camFocus。 Camera follow avatar, an example:

lookAtMe( integer perms )
{
    if ( perms & PERMISSION_CONTROL_CAMERA )
    {
        llClearCameraParams(); // reset camera to default
        llSetCameraParams([
            CAMERA_ACTIVE, 1, // 1 is active, 0 is inactive
            CAMERA_BEHINDNESS_ANGLE, 30.0, // (0 to 180) degrees
            CAMERA_BEHINDNESS_LAG, 0.0, // (0 to 3) seconds
            CAMERA_DISTANCE, 10.0, // ( 0.5 to 10) meters
          //CAMERA_FOCUS, <0,0,5>, // region relative position
            CAMERA_FOCUS_LAG, 0.05 , // (0 to 3) seconds
            CAMERA_FOCUS_LOCKED, FALSE, // (TRUE or FALSE)
            CAMERA_FOCUS_THRESHOLD, 0.0, // (0 to 4) meters
            CAMERA_PITCH, 10.0, // (-45 to 80) degrees
          //CAMERA_POSITION, <0,0,0>, // region relative position
            CAMERA_POSITION_LAG, 0.0, // (0 to 3) seconds
            CAMERA_POSITION_LOCKED, FALSE, // (TRUE or FALSE)
            CAMERA_POSITION_THRESHOLD, 0.0, // (0 to 4) meters
            CAMERA_FOCUS_OFFSET, <2.0, 0.0, 0.0> // <-10,-10,-10> to <10,10,10> meters
        ]);
    }
}

请注意,在第二个例子中,焦点和位置没有锁定,甚至没有设置。这是适合让相机跟随车辆上的飞行员。

相关函数
llGetPermissions - 获得已授予的权限

llGetPermissionsKey - 获取授予权限的代理

llRequestPermissions - 请求的权限

llClearCameraParams

llGetCameraPos

llGetCameraRot

相关事件
run_time_permissions - 允许接收事件

附录:(表格)