ビークル内でよく使う関数

vector llGetVel()

速度を取得。戻り値はリージョン座標系(グローバル座標系)。

vector vel_global = llGetVel();
// vector vel_local = vel_global / llGetRot();
float vel = llVecMag(vel_global); // <--- m/s
// vel *= 3.6; <--- km/h

vector llGetAccel()

加速度を取得。戻り値はリージョン座標系(グローバル座標系)。llGetRot()で割ればビークルのローカル座標系に変換できる。

vector ac_global = llGetAccel();
vector ac_local = ac_global / llGetRot();
rotation rot = llGetRot();
vector fwd = llRot2Fwd(rot);
vector gnd = <fwd.x, fwd.y, 0.0>;
rotation elevation_angle_rot = llRotBetween(gnd, fwd) / rot;

list llCastRay()

vector start = llGetPos();
vector end = start - <0.0, 0.0, 5.0>;
list data = llCastRay(start, end, [RC_REJECT_TYPES, RC_REJECT_PHYSICAL|RC_REJECT_AGENTS, RC_MAX_HITS, 1]);
vector gnd = llList2Vector(data, 1); // <--- [ヒットしたオブジェクトのUUID, そのグローバル座標] が戻る
float elevation = gnd.z;