“LlDetectedTouchST”的版本间的差异
| 第4行: | 第4行: | ||
{{函数详情 | {{函数详情 | ||
|函数名 = Function: vector llDetectedTouchST( integer index ); | |函数名 = 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。 |
| − | ** | + | **触摸太靠近脸的边缘,无法确定位置。 |
| − | ** | + | **触发的事件不是触摸事件。 |
|示例= | |示例= | ||
2020年5月18日 (一) 11:33的最新版本
| 首页 | 函数 | 事件 | 类型 | 操作符 | 常数 | Flow Control | Script Library | Categorized Library | Tutorials |
| 函数名 |
|---|
| Function: vector llDetectedTouchST( integer index ); |
| 参数:整数索引—检测信息索引不支持负索引。 |
| 返回值:返回一个向量,该向量是prim被触摸的表面坐标。x和y矢量位置分别包含水平(s)和垂直(t)面坐标(<s, t, 0.0>)。每个组件通常位于区间[0.0,1.0],原点位于左下角。在一些网格对象中,观察到的值小于0.0,大于1.0。 |
| 注意事项 |
|---|
注意事项
|
| 示例 |
|---|
示例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 |