LlTarget

来自人工智能助力教育知识百科
Wzc讨论 | 贡献2020年7月20日 (一) 08:58的版本 (创建页面,内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}} {{函数详情 |函数名 = Function: integer llTarget( vector position, float range ); |参数=…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

Template:Needs Translation/


函数名
Function: integer llTarget( vector position, float range );
参数:此函数用于让脚本知道它何时到达某个位置。

它注册一个位置,其范围在注销前连续触发“在目标”事件而不是“在目标”事件。 返回一个句柄(整数),以使用llTargetRemove注销目标。 •矢量位置( vector position)–区域坐标中的位置 •浮动范围(float range) 旋转也有类似的函数:llRotTarget 此函数不移动对象,为此,请使用llSetPosllMoveToTarget

返回值:无
注意事项
位置始终引用当前区域。如果在区域A中将llTarget设置为<100,100,100>,然后将对象移动到区域B,则区域B中的目标将自动变为<100,100,100>。

位置可以设置在区域边界之外,但是只有当范围扩展到当前区域时,才会发生at_target。当前区域之外的部分射程不会在目标激活。 一个脚本只能激活8个目标。其他llTarget将删除最旧的目标集。

示例
示例1
integer target_id;
vector target_pos;
 
default
{
    state_entry()
    {
        target_pos = llGetPos() + <1.0, 0.0, 0.0>;
        target_id = llTarget(target_pos, 0.5);
    }
    at_target(integer tnum, vector targetpos, vector ourpos)
    {
        if (tnum == target_id)
        {
            llOwnerSay("object is within range of target");
            llOwnerSay("target position: " + (string)targetpos + ", object is now at: " + (string)ourpos);
            llOwnerSay("this is " + (string)llVecDist(targetpos, ourpos) + " meters from the target");
            llTargetRemove(target_id);
        }
    }
    not_at_target()
    {
        llOwnerSay(
            "not there yet - object is at " + (string)llGetPos() + 
            ", which is " + (string)llVecDist(target_pos, llGetPos()) + 
            " meters from the target (" + (string)target_pos + ")"
        );
    }
}
相关函数
llTargetRemove –取消目标位置

llRotTarget –记录目标旋转

llRotTargetRemove –取消目标旋转

相关事件
at_target not_at_target–定位目标事件

at_rot_targetnot_at_rot_target–旋转目标事件