スクリプトをわかりやすく、かつロマンチッコに解説する『なぜなにスクリプト』早いもんでもう三回目ですが。
講師のリトマスです。
さて、今回のお題は『オブジェクトを回転させる』ですが、これは便利ですねー。回転寿司とか、あと……回転寿司に回ってるゼリーとか。
回転寿司ばっかりじゃないですか。もっと他にあるでしょう。お店の看板とか。
なるほど! 回転寿司の看板を作るのにもってこいですね。
回転寿司から離れて考えましょうよ。さて、サンプルスクリプトですが。
| default { state_entry() { llTargetOmega(<1.0,1.0,1.0>, PI, 1.0); } } |
おおぅ? なにやら数字とかが色々入っててまいっちんぐですね。
おなじみlslWikiで調べてみますと、llTargetOmega(vector axis, float spinrate, float gain); とあります。
そのカッコの中の謎の暗号についてお願いします。
vector axis というのは、で、前回はColorのRGBでしたが、今回は、XYZ座標を表現しています。vectorはこの2通りの使われ方をします。
なるほど。前回とは同じ書式ですが、違う内容で理解しなければならないということですね? XYZは、縦横高さになるというわけですか。
そうです。float spinrate というのは、一秒間の回転速度です。
フロートというのは少数を入れる気がしましたが、PIって書いてありますね?
PIは定数で180度回転を意味します。3.14……をPIというキーワードで代替することが可能なんですね。
なるほどπはPIでいいんですか、便利ですね。私はうっかり円周率を二万桁まで入れるところでしたよ。
こういう定数キーワードは紫色文字になります。
二万桁なんて入れないよっ! ……なーんて、自分でつっこんだりして。ナハナハ!
ほっときます。ここはPIを入れるってことで問題ないですね。
リトマスさんからは愛を感じない。
float gain の1.0はPhysicsのオブジェクトでは意味があるようですが、ほとんどはNon-Physicsのオブジェクトで使われるので、ここは1.0ってことにしましょう。
難しいことはまた今度っていうことで。
(<0,0,1>,PI,1.0)ってのは、Z軸を中心にして回転するということです。1秒間で半回転します。(<0,0,2>,PI,1.0)ってのは、1秒間で1回転します。
ものすごい高速で回転させることも可能なんですね。寿司とか。
<1,1,1>とすると、不思議な動きをします。これだけでちょっとしたオブジェクトがつくれそうですね。
おお、実に三次元的な動きだ。未来を感じる動きですね。寿司とか。
では、ちょっと応用です。リンクされているオブジェクトの場合、このスクリプトが、ルートプリムに仕込まれている場合は、オブジェクト全体が回転します。ルートプリムでない場合は、そのチャイルドプリムだけが回転します。
なるほど、寿司を回しながらネタも回転できるんですね。
また、ローカル座標というものがあります。Rezした状態のプリムのRotationはオール0です。これを傾けると、そのオブジェクトのローカル座標が変わります。
縦回転のつもりが、オブジェクトを傾けたせいで横回転になってしまうということですね。
llTargetOmegaはそのローカル座標を基軸にして、指定された方向に回転します。なので、Z軸で回すつもりだったのに、オブジェクトのローカル座標が変わってるため、Z軸で回ってないように見えますので、注意して下さい。
気をつけないと、シャリが崩れることになりますからね。
もう寿司はいいよ。
はい! あがり一丁!
そういう意味じゃないんだよ!
マグスル second life セカンドライフの遊び方マガジン
magsl 2007/03/17













コメント (1)
やばい、不覚にも笑ってしまいました(^-^)
初心者なので大変参考になりました。
早速使わせていただきます。
ありがとうございました。
投稿者: Motty | 2007/05/07 21:19
2007/05/07 21:19