LlSetRot

来自人工智能助力教育知识百科
跳转至: 导航搜索

Template:Needs Translation/


函数名
Function: llSetRot( rotation rot );
参数:•旋转腐烂
返回值:将基本体的旋转设置为“旋转”。
注意事项
此函数使脚本休眠0.2秒。

如果附加了prim,则此函数将通过化身的旋转偏移旋转。 如果基本面不是根基本面,则由根的旋转偏移。 如果试图设置子基本体相对于根基本体的旋转,则将旋转除以根旋转。 如果要将子prim的旋转设置为全局旋转,则需要将全局旋转除以根旋转两次。 最好使用llSetLocalRot设置子基元的旋转,即使将其设置为全局旋转(在这种情况下,只需除以根旋转)。 或者,请参阅使用llSetPrimitiveParams、llSetLinkPrimitiveParams和llSetLinkPrimitiveParamsFast的通用解决方案的有用片段 对于较小的旋转更改,有一个更新阈值,这取决于更改之间的持续时间。它似乎不再局限于6度规则。 对于“静态对象”(寻路类型),脚本失败,并在调试通道中出现错误: “无法设置主旋转:对象对navmesh起作用。”

示例
将此脚本放到对象的根prim中,使其以1度增量旋转。请注意,如果根被旋转,它将不适用于子基本体。
rotation rot_xyzq;
 
default
{
    state_entry()
    {
        vector xyz_angles = <0,1.0,0>; // This is to define a 1 degree change
        vector angles_in_radians = xyz_angles*DEG_TO_RAD; // Change to Radians
        rot_xyzq = llEuler2Rot(angles_in_radians); // Change to a Rotation
    }
 
    touch_start(integer s)
    {
        llSetRot(llGetRot()*rot_xyzq); //Do the Rotation...
    }
}

把这个放到子prim中,让它以1度的增量围绕世界的Y轴旋转。如果旋转它,它将无法在根中工作。

rotation rot_xyzq;
 
default
{
    state_entry()
    {
        vector xyz_angles = <0,1.0,0>; // This is to define a 1 degree change
        vector angles_in_radians = xyz_angles*DEG_TO_RAD; // Change to Radians
        rot_xyzq = llEuler2Rot(angles_in_radians); // Change to a Rotation
    }
 
    touch_start(integer s)
    {
        llSetRot(llGetRot()*rot_xyzq/llGetRootRotation()/llGetRootRotation()); //Do the Rotation...
    }
}

有用的片段

//-- These correctly set a global rotation for the root prim in all scenarios
llSetLocalRot( rot )
llSetPrimitiveParams( [PRIM_ROT_LOCAL, rot] )
 
//-- These correctly set a global rotation for a child prim in all scenarios
llSetLocalRot( rot / llGetRootRotation() )
llSetPrimitiveParams( [PRIM_ROT_LOCAL, rot / llGetRootRotation() ] )
相关函数
llGetRot

llGetLocalRot

llGetPrimitiveParams

llGetLinkPrimitiveParams

llSetLocalRot

llSetPrimitiveParams

llSetLinkPrimitiveParams

llSetLinkPrimitiveParamsFast

llTargetOmega

相关事件