「llGetVel( )」は、LSL Portalで定義を見ると、ベクター型のデータを返す関数となっている。

「llGetVel( )」を「vector vel = llGetVel();」というスクリプトで使い、その代入先を指定すると、次のことが実行される。
- 「llGetVel( )」が、Linden Labのサーバへ問い合わせをする
- その結果としてベクター型(x, y, z)データ、例えば、「(2, 4, 6)」のような値が返ってくる
- 返ってきた値「(2, 4, 6)」を「vel」に代入する
注意:上記の「(2, 4, 6)」はあくまでも例である。実際には、その時点や状態に応じた具体的な数値が返ってくる。

理解できただろうか。この関数は、サーバからデータを取ってくる「召使い」みたいなものだ。サーバに問い合わせることで、その時点や状態に応じたデータについて「数値はこれこれですよ」と返してくれる。
では、「llGetVel( )」がサーバに問い合わせているのは何か?それは、「速度ベクトル」の値だ。速度ベクトルとは、3次元空間上では必須である「向き」のデータをもった速度の値である。つまり、今回のスクリプトが埋め込まれたオブジェクトの移動について、速度ベクトルが問い合わされている。
以上のことから、「vector vel = llGetVel();」は、「llGetVel( )」をサーバに速度ベクトルの値を問い合わせ、得られた具体的な値を「vel」に代入することを示している。
2行目は、下図のようになっている。ここでは、「speed」という関数がユーザーによって定義されている。

「speed」は、データ型が「float」で、「llVecMag(vel)」の値が代入される。「llVecMag( )」は、LSL Portalで定義を見ると、「( )」内のベクター型データを小数型の数値(絶対値)に置き換えて返す関数となっている(絶対値とはマイナスやプラスの関係ない値であり、「|-1|= 1」となる)。

「llVecMag(vel)」は、ユーザーが定義した関数(ユーザー定義関数)である「vel」を「( )」内に持っている。このことから、「vel」として得られた速度ベクトルを小数型の数値(絶対値)に置き換えることを示している。