darkdaft
2007年12月30日
11:14
Sandboxで何かを作る時に、周りに人や物があると集中出来ない、動作が重いなどの理由から良く空中に板状のプリムを置いて作業をするらしいですね。今まで手動でやっていたのですが、面倒なので、スクリプトで上まで行けるようにしようと思い、空高く登るスクリプトを書いてみました。
ただただ、一瞬で上に行くだけでは面白くないので、ある程度のスピードを保つことも考えて、作りました。
最初は、Skinを主に作るつもりでしたが、スクリプトも面白いですね。
スクリプトの内容は追記に書いておきます。
- //----------------Customize----------------------//
- integer toppos = 1;
- float speed = 5.0;
- //----------------------------------------------//
- //----------------------------------------------//
- vector topos = ;
- integer counter;
- vector pos;
- //----------------------------------------------//
- default
- {
- state_entry(){
- pos = llGetPos();
- counter = 0;
- state bottom;
- }
- }
- state top {
- state_entry(){
- counter = 0;
- while ( counter < toppos ) {
- counter += 1 ;
- llSetPos( pos + );
- };
- }
- touch_start ( integer total_number ){
- state bottom;
- }
- }
- state bottom{
- state_entry(){
- if (counter != 0){
- counter = 0;
- vector pool = llGetPos();
- while ( counter < toppos ) {
- counter += 1 ;
- llSetPos( pool + );
- };
- };
- }
- touch_start ( integer total_number ){
- state top;
- }
- }
変数名が適当で分かりにくいかと思いますが、一応Customizeの中の2つだけ説明します
toppos 繰り返し回数
speed 1回で進む距離(m)
到着地点が、400mで40回に分けて進ませる場合は、
toppos = 40;
speed = 10;
と設定すればOKです。ちなみに位階に進む距離は10m以上は無理みたいです。
詳しいことはまだ分かりませんが…。
ただ、このスクリプトの書き方だと、動きがやはりぎこちないんですよね。
forceというエネルギー計算での移動方法があるようなので、今はそっちにチャレンジしています。