Wzc(讨论 | 贡献)2020年8月13日 (四) 07:37的版本
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
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() ] )
|