2007年07月07日

llSetLinkPrimitiveParams

llSetLinkPrimitiveParamsだと、PRIM_POSITIONが機能しない現象が起こってます。PRIM_POSITION以外は機能しているようです。llSetPrimitiveParamsでは、確かに機能ししていたので、これは便利と思っていたのですが・・・。簡単なTEST文を載せてみました。何か問題があるのでしょうか?ご存知の方がいらしゃったら是非お教えください。

-----------------------------------------------
default
{ touch_start(integer total_number)
{
llSetLinkPrimitiveParams(LINK_ALL_OTHERS, [PRIM_POSITION, ,<148, 188, 30>]);
}
}
-----------------------------------------------



Posted by metabirds SLMaMe  at 14:23 │Comments(5)

この記事へのコメント
PRIM_POSITIONの後ろにカンマが2つあるのはtypoですよね? :p

child primはroot primからの相対位置指定となり、一度に移動可能な距離は10m以下なので、上記例は失敗するはずです。
リンクされたprim全体を<148,188,30>に移動させたいなら

・llSetLinkPrimitiveParams(LINK_ROOT, [PRIM_POSITION ,<148, 188, 30>]);
・llSetPrimitiveParams( [PRIM_POSITION ,<148, 188, 30>]);
・llSetPos(<148, 188, 30>]);

のどれかを使えばいいんじゃないですか?
Posted by at 2007年07月07日 15:57
上の補足
言うまでも無く、元の位置が<148,188,30>から10m以上はなれた場所にあるならこれは動きません。
Posted by at 2007年07月07日 16:08
at さまアドバイスありがとうございます
,二つはタイプミスです。10m以上の制限は、一応知っており親のそばの座標を指定しました。
child primを移動させたくて色々と試してはいるのですが、

default
{
touch_start(integer total_number)
{
llSetLinkPrimitiveParams(LINK_ALL_OTHERS, [PRIM_POSITION, llGetPos()]);
}
}

としてもまったく反応がなく
linkナンバーの指定をrootにすると動きます。
いまだ親は動かせるけど子が動かせないという現象にぶつかっております。
Posted by t4476 at 2007年07月08日 19:03
llGetPosが返す座標はローカル座標ではないので、きっと上記例は反応ないと思いますよ。
llSetLinkPrimitiveParams(LINK_ALL_OTHERS,[PRIM_POSITION,<0,0,1>]);

にすると、child primすべてがroot primの1m上空に移動すると思います。
これでピンときませんか?
Posted by at 2007年07月09日 02:35
at 様たびたびのコメントありがとうございます。
やっと理解できました。なるほどrootのローカル座標と考えれば
よかったんですね。
Posted by t4476 at 2007年07月09日 09:13
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。