“LlDetectedTouchST”的版本间的差异
(创建页面,内容为“{{LSL Header|ml=*}}{{LSLC|Keywords}}{{LSLC|Flow Control}}{{LSLC|}} {{函数详情 |函数名 = Function: vector llDetectedTouchST( integer index ); |参数= 参数…”) |
|||
第9行: | 第9行: | ||
|注意事项= | |注意事项= | ||
+ | 注意事项 | ||
*If index is out of bounds the script continues to execute without an error message. | *If index is out of bounds the script continues to execute without an error message. | ||
*TOUCH_INVALID_TEXCOORD is returned when... | *TOUCH_INVALID_TEXCOORD is returned when... |
2020年4月13日 (一) 10:37的版本
首页 | 函数 | 事件 | 类型 | 操作符 | 常数 | Flow Control | Script Library | Categorized Library | Tutorials |
函数名 |
---|
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. |
注意事项 |
---|
注意事项
|
示例 |
---|
示例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 |