LlTarget
首页 | 函数 | 事件 | 类型 | 操作符 | 常数 | Flow Control | Script Library | Categorized Library | Tutorials |
函数名 |
---|
Function: integer llTarget( vector position, float range ); |
参数:此函数用于让脚本知道它何时到达某个位置。
它注册一个位置,其范围在注销前连续触发“在目标”事件而不是“在目标”事件。 返回一个句柄(整数),以使用llTargetRemove注销目标。 •矢量位置( vector position)–区域坐标中的位置 •浮动范围(float range) 旋转也有类似的函数:llRotTarget 此函数不移动对象,为此,请使用llSetPos或llMoveToTarget。 |
返回值:无 |
注意事项 |
---|
位置始终引用当前区域。如果在区域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–定位目标事件 |