“LlSetRot”的版本间的差异
(创建页面,内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}} {{函数详情 |函数名 = Function: llSetRot( rotation rot ); |参数= 参数:•旋转腐…”) |
(没有差异)
|
2020年8月13日 (四) 07:37的最新版本
| 首页 | 函数 | 事件 | 类型 | 操作符 | 常数 | Flow Control | Script Library | Categorized Library | Tutorials |
| 函数名 |
|---|
| 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 |
| 相关事件 |
|---|