BlackSheep-LSL@Wiki

llGetVel

最終更新:

mizcremorne

- view
メンバー限定 登録/ログイン

llGetVel

vector llGetVel()

オブジェクトの速度(m/s)を得る。
戻り値はvectorであるので、当然ながらオブジェクトが移動している方向を知ることも可能である。

単純にオブジェクトの速度を得たいなら、
 float speed = llVecMag(llGetVel());
とすると純粋な速度(m/s)がfloat型で得られる。
llVecMag関数はvectorの長さを得る関数。

オブジェクトの移動方向を知りたいなら、
 vector normal = llVecNorm(llGetVel());
このようにすると長さ1mのvectorを得ることができる。
長さ1mのvectorのことを単位ベクトルと言い、何かと便利な代物である。

何が便利かって、例えば、オブジェクトの進行方向5m先の座標を得たいと思ったら、
 vector pos = llGetPos() + llVecNorm(llGetVel()) * 5.0;
単位ベクトルは1mなので、5倍すれば5mの長さになる。
これを現在位置に足してやれば、進行方向5m先の座標になる。

なお、オブジェクトの速度は一定ではないので注意。
SLの世界には重力も働いているし、生意気にもエネルギーの概念があるため、永久に同じ速度で動き続けるオブジェクトは基本的には存在しない。

速度ではなく加速度を得るにはllGetAccel関数を、オブジェクトに加えられている力を得るにはllGetForce関数を使う。
言うまでもないが、加速度も力も、速度に影響を与えている。

名前:
コメント:
記事メニュー
目安箱バナー