LSL:座ったアバターを回転させる

jinko

2008年06月16日 15:13


ぱるちゃんから、「座ったアバターを回転する方法」を聞かれて、
試してみました。



座ってるアバターは、オブジェクトにリンクされている状態なので、
llSetLinkPrimitiveParamsという関数でコントロールする


というのがポイントなんですけど、回転っていうのが、よくわかってなくて、
試行錯誤してしまいました^^;

回転の詳しい説明のページは、こちらです。
(1)wikiのRotationのページ
(2)BlackSheep-LSL@Wiki 回転について

どちらも丁寧に書いてくれているのですが、いまだに回転はよくわかりません^^;
手取り足取り教えてくれる先生募集中です^^(←本気)

とりあえず、タッチでグローバルのZ軸まわりに45度ずつ回転させる
サンプルを公開してみます。
なお、回転軸は考慮されていませんので、お気をつけください。



//座っているアバターを回転させるサンプル
// Jun 16, 2008 by Jinko Spitteler

//コンフィグレーション
integer gDegStep = 45;
vector gvSitPos = ;
vector gvSitRot = ;

//グローバル変数
float fRot = 0.0;
rotation grSitRot;

default {
state_entry() {
grSitRot = llEuler2Rot(gvSitRot * DEG_TO_RAD);
llSitTarget(gvSitPos, grSitRot);
}
touch_start(integer total_number) {
integer i;
key av = llAvatarOnSitTarget();
integer no = 0;

//誰も座ってなければなにもしない
if (av == NULL_KEY) return;

//アバターのリンクナンバーを探す
for (i = 1; i