LlRezAtRoot

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

Template:Needs Translation/


函数名
Function: llRezAtRoot( string inventory, vector position, vector velocity, rotation rot, integer param );
参数:• string inventory – 这个脚本所在的prim目录中的一个对象

• vector position – 位置在区域坐标,以放置对象

• vector velocity – 初始速度

• rotation rot – 最初的旋转

• integer param – on_rez事件参数和llGetStartParameter在rezzed对象中返回的值(或合并对象中的每个项)。

返回值:使用param作为起始参数,实例化旋转到rot的inventory对象,其根位于位置,以速度移动

使用llRezObject对一个对象进行rez,使其中心位置(而不是根位置)。

注意事项
这个函数使脚本休眠0.1秒。

如果prim的库存中缺少库存,或者它不是一个对象,那么DEBUG_CHANNEL将显示错误。

如果位置距离prim超过10米,尝试激活库存将会静默失败。

如果对象是独立的,并且对象的所有者没有对库存的复制权限,那么在重新zzed之后,该对象将不再出现在库存中(因此再次尝试rez(相同的对象)将失败);如果所有者确实拥有复制许可,那么副本将被重新分配,而原始库存仍保留在库存中。

如果对象是附加的,而对象的所有者对库存没有复制权限,则在DEBUG_CHANNEL上会显示一个错误:“不能从附加的对象复制对象。” 如果你没有在这片土地上进行线下建设的权利,你就会失败。要有这个权利,你的对象需要:

 在你自己的土地上。
 在允许任何人建造的陆地上,例如沙盒。
 被转让给拥有土地的集团。
 设置为拥有土地的同一组,而土地具有“允许组构建”标志设置。

组角色“总是允许‘创建对象’”将只在您在线、在该地区或在该地区有一个子代理时覆盖此功能。有关更多信息,请参阅Deep Notes下的问题。

有关如何在rezzing对象和新的prim之间建立通信的示例,请参阅object_rez

示例
示例1
//Rez an object on touch
string object = "Object";//Object in inventory
integer start_param = 10;
rotation rot;
 
default
{
    state_entry()
    {
        rot = llEuler2Rot(< 0, 90, 90> * DEG_TO_RAD);
    }
    touch_start(integer a)
    {
        vector vec = llGetPos() + < 0.0, 0.0, 5.0>; // 5 meter above this
        vector speed = llGetVel();
        llRezAtRoot(object, vec, speed, rot, start_param);
    }
}
//Rez an object on touch, with relative position, rotation, and velocity all described in the rezzing prim's coordinate system.
string object = "Object"; // Name of object in inventory
vector relativePosOffset = <2.0, 0.0, 1.0>; // "Forward" and a little "above" this prim
vector relativeVel = <1.0, 0.0, 0.0>; // Traveling in this prim's "forward" direction at 1m/s
rotation relativeRot = <0.707107, 0.0, 0.0, 0.707107>; // Rotated 90 degrees on the x-axis compared to this prim
integer startParam = 10;
 
default
{
    touch_start(integer a)
    {
        vector myPos = llGetPos();
        rotation myRot = llGetRot();
 
        vector rezPos = myPos+relativePosOffset*myRot;
        vector rezVel = relativeVel*myRot;
        rotation rezRot = relativeRot*myRot;
 
        llRezAtRoot(object, rezPos, rezVel, rezRot, startParam);
    }
}
相关函数
llRezObject

llGetStartParameter

llGodLikeRezObject

相关事件