“LlDetectedTouchST”的版本间的差异

来自人工智能助力教育知识百科
跳转至: 导航搜索
(创建页面,内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}} {{函数详情 |函数名 = Function: vector llDetectedTouchST( integer index ); |参数= 参数…”)
 
Qmf讨论 | 贡献
 
(未显示同一用户的1个中间版本)
第4行: 第4行:
 
{{函数详情
 
{{函数详情
 
|函数名 = Function: vector llDetectedTouchST( integer index );
 
|函数名 = Function: vector llDetectedTouchST( integer index );
|参数= 参数:integer index–Index of detection information index does not support negative indexes.
+
|参数= 参数:整数索引—检测信息索引不支持负索引。
|返回值= 返回值:Returns a vector that is the surface coordinates for where the prim was touched. The x & y vector positions contain the horizontal (s) & vertical (t) face coordinates respectively (<s, t, 0.0>). Each component is usually in the interval [0.0, 1.0] with the origin in the bottom left corner.[1] With some mesh objects, values of less than 0.0 and higher than 1.0 have been observed.
+
|返回值= 返回值:返回一个向量,该向量是prim被触摸的表面坐标。x和y矢量位置分别包含水平(s)和垂直(t)面坐标(<s, t, 0.0>)。每个组件通常位于区间[0.0,1.0],原点位于左下角。在一些网格对象中,观察到的值小于0.0,大于1.0。
 
 
  
 
|注意事项=
 
|注意事项=
*If index is out of bounds the script continues to execute without an error message.
+
注意事项
*TOUCH_INVALID_TEXCOORD is returned when...
+
*如果索引超出界限,脚本将继续执行,不会出现错误消息。
**The avatar's viewer does not support face touch detection.
+
*TOUCH_INVALID_TEXCOORD在…
***To check if face touch detection is supported check the return of llDetectedTouchFace.
+
**头像查看器不支持面部触摸检测。
**The touch has moved off the surface of the prim.
+
***检查是否支持face touch检测,检查llDetectedTouchFace返回。
**The touch happened too close to the edge of the face to determine a location.
+
**触摸已经离开了表面的prim。
**The event triggered is not a touch event.
+
**触摸太靠近脸的边缘,无法确定位置。
 +
**触发的事件不是触摸事件。
  
 
|示例=
 
|示例=

2020年5月18日 (一) 11:33的最新版本

Template:Needs Translation/


函数名
Function: vector llDetectedTouchST( integer index );
参数:整数索引—检测信息索引不支持负索引。
返回值:返回一个向量,该向量是prim被触摸的表面坐标。x和y矢量位置分别包含水平(s)和垂直(t)面坐标(<s, t, 0.0>)。每个组件通常位于区间[0.0,1.0],原点位于左下角。在一些网格对象中,观察到的值小于0.0,大于1.0。
注意事项
注意事项
  • 如果索引超出界限,脚本将继续执行,不会出现错误消息。
  • TOUCH_INVALID_TEXCOORD在…
    • 头像查看器不支持面部触摸检测。
      • 检查是否支持face touch检测,检查llDetectedTouchFace返回。
    • 触摸已经离开了表面的prim。
    • 触摸太靠近脸的边缘,无法确定位置。
    • 触发的事件不是触摸事件。
示例
示例1
default
{
    touch_start(integer total_number)
    {
        integer touchFace = llDetectedTouchFace(0);
        vector  touchST   = llDetectedTouchST(0);
 
//      ZERO_VECTOR (<0.0, 0.0, 0.0> ... the origin) is in the bottom left corner of the face
//      touchST.x goes across the face from the left to the right
//      touchST.y goes up the face from the bottom to the top
 
        if (touchFace == -1)
            llWhisper(PUBLIC_CHANNEL, "Sorry, your viewer doesn't support touched faces.");
        else if (touchST == TOUCH_INVALID_TEXCOORD)
            llWhisper(PUBLIC_CHANNEL, "Sorry, the touch position upon the face could not be determined.");
        else
            llSay(PUBLIC_CHANNEL, "llDetectedTouchST(0) = " + (string)touchST
                    + "\ntouchST.x = " + (string)touchST.x
                    + "\ntouchST.y = " + (string)touchST.y);
    }
}

示例2

integer numberOfRows    = 12;
integer numberOfColumns = 12;
 
default
{
    touch_start(integer total_number)
    {
        vector  touchST     = llDetectedTouchST(0);
 
//      ZERO_VECTOR (<0.0, 0.0, 0.0> ... the origin) is in the bottom left corner of the face
//      touchST.x goes across the face from the left to the right
//      touchST.y goes up the face from the bottom to the top
 
        integer columnIndex = (integer) (touchST.x * numberOfColumns);
        integer rowIndex    = (integer) (touchST.y * numberOfRows);
        integer cellIndex   = (rowIndex * numberOfColumns) + columnIndex;
 
        llSay(PUBLIC_CHANNEL, "ST grid (" + (string)columnIndex + ", " + (string)rowIndex
                            + ") --> cell " + (string)cellIndex);
    }
}

示例3

//  with friendly permission of Supremius Maximus
//  who made the texture used in this script
//
//  click&hold the mouse while dragging across
//  the face of the prim
default
{
    touch(integer num_detected)
    {
        integer link    = llDetectedLinkNumber(0);
        integer face    = llDetectedTouchFace(0);
        vector  touchST = llDetectedTouchST(0);
 
//      ZERO_VECTOR (<0.0, 0.0, 0.0> ... the origin) is in the bottom left corner of the face
//      touchST.x goes across the face from the left to the right
//      touchST.y goes across the face from the bottom to the top
 
        string uuid = "23badbe7-6d8c-639b-0131-bb321f8e9db5";
 
        llSetLinkPrimitiveParamsFast(link, [
            PRIM_TEXTURE, face, uuid, <1.0, 1.0, 0.0>, touchST, 0,
            PRIM_FULLBRIGHT, ALL_SIDES, TRUE]);
    }
}
相关函数
llDetectedLinkNumber

llDetectedTouchFace llDetectedTouchUV llDetectedTouchPos llDetectedTouchNormal llDetectedTouchBinormal

相关事件
touch_start

touch touch_end