2007年11月13日

カラーチェンジの仕方 教えてください><

髪やバッグなど、アバターに装着したものを touch でカラー変更させたいと思ってます。
現状、装着しなければカラー変更できるのですけど…。
↑可能、ですよね…?

わかる方、教えてください。


同じカテゴリー(スクリプト関連)の記事画像
オブジェクトのリンクとタッチで開く扉
自動チャットを止めたい
テレポートするとアニメーションが解除される
同じカテゴリー(スクリプト関連)の記事
 テクスチェンジのHUDについて (2015-07-01 04:51)
 モール用のプリムカウンターを探しています (2014-11-29 20:09)
 連続するアニメーションの処理 (2014-08-24 03:23)
 オブジェクトの上にフローティングテキストを出す。 (2014-08-22 16:46)
 チャットログの盗聴について (2014-02-03 03:43)
 椅子に座った後で位置調整できるスクリプト (2013-03-24 16:37)

Posted by pin  at 17:48 │Comments(5)スクリプト関連

この記事へのコメント
装着していてもオブジェクトの色を変えることはできますよ。

// Main
default
{
state_entry()
{
llSetColor(<1.0, 1.0, 1.0>, ALL_SIDES);
}

// Rez Event
on_rez(integer start_param)
{
llResetScript();
}

// Touch Event
touch_start(integer num_detected)
{
llSetColor(<1.0, 0.0, 0.0>, ALL_SIDES);
}
}

上のスクリプトでは最初に白<1.0, 1.0, 1.0>に設定しています。装着してオブジェクトをクリックすればtouch_startが動きますので、その中でllSetColorで赤<1.0, 0.0, 0.0>にしています。

上の例は1プリムのオブジェクトで実行して問題なく動きます。

たとえばオブジェクトが複数プリムあって、ルートプリムにだけスクリプトがあるとすれば、llSetColorは自分しか色を変えられないので

llSetLinkColor(integer linknumber, vector color, integer face)

で子プリムの色を変えてやらなければなりません。その場合は、

integer i;
integer prim_num = llGetNumberOfPrims(); // リンクされているプリム数を得る
for(i = 2;i <= prim_num; i++) // リンク番号1はルートプリムなので2からスタート
{
llSetLinkColor(i, <1.0, 0.0, 0.0>, ALL_SIDES);
}

とすれば全プリムの色を変えることができます。
Posted by sasapy at 2007年11月13日 18:33
sasapy さん、教えていただきありがとうございます。

とりあえず1プリムで、教えていただいたスクリプトを入れてみました。
…のですが、タッチで色は変わるのですけど、装着したときに「ドロップ」「編集」「取り外す」しか出てこないのです。
「touch」がないのです!
ナゼ??

お手数ですが、他に何かわかれば教えていただけると助かります。
Posted by pin at 2007年11月13日 23:22
やっぱりそうでしたか…。
調べていただいてありがとうございました。

私ももう少し試してみます!
Posted by pin at 2007年11月14日 01:57
全プリムの色を変えるには、forループで回さなくても
llSetLinkColor(LINK_SET, <1.0, 0.0, 0.0>, ALL_SIDES);
で変更できます。
Posted by Geek at 2007年11月20日 22:18
すいません。コメントなのに、質問です。
ぼくもわからなくて困ってたんですが、これで出来ました。
しかし、ほかの色(たとえば、黄色とか)にするばあいの数字は
オブジェクトの上に出す文字のスクリプトと同じですか?
Posted by itapo johin at 2007年12月04日 21:25
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。