ソラマメブログ
アクセスカウンタ

2007年12月30日

エレベータースクリプトを書いてみた


Sandboxで何かを作る時に、周りに人や物があると集中出来ない、動作が重いなどの理由から良く空中に板状のプリムを置いて作業をするらしいですね。今まで手動でやっていたのですが、面倒なので、スクリプトで上まで行けるようにしようと思い、空高く登るスクリプトを書いてみました。

ただただ、一瞬で上に行くだけでは面白くないので、ある程度のスピードを保つことも考えて、作りました。
最初は、Skinを主に作るつもりでしたが、スクリプトも面白いですね。

スクリプトの内容は追記に書いておきます。


  1. //----------------Customize----------------------//
  2. integer toppos = 1;
  3. float speed = 5.0;
  4. //----------------------------------------------//

  5. //----------------------------------------------//
  6. vector topos = <0.0,0.0,toppos>;
  7. integer counter;
  8. vector pos;
  9. //----------------------------------------------//
  10. default
  11. {
  12. tabstate_entry(){
  13. tabtabpos = llGetPos();
  14. tabtabcounter = 0;
  15. tabtab
  16. tabtabstate bottom;
  17. tab}
  18. }

  19. state top {
  20. tabstate_entry(){
  21. tabtabcounter = 0;
  22. tabtabwhile ( counter < toppos ) {
  23. tabtabtabcounter += 1 ;
  24. tabtabtabllSetPos( pos + <0.0,0.0,counter * speed> );
  25. tabtab};
  26. tab}
  27. tab
  28. tabtouch_start ( integer total_number ){
  29. tabtabstate bottom;
  30. tab}
  31. }

  32. state bottom{
  33. tabstate_entry(){
  34. tabtabif (counter != 0){
  35. tabtabtabcounter = 0;
  36. tabtabtabvector pool = llGetPos();
  37. tabtabtabwhile ( counter < toppos ) {
  38. tabtabtabtabcounter += 1 ;
  39. tabtabtabtabllSetPos( pool + <0.0,0.0,counter * speed * -1> );
  40. tabtabtab};
  41. tabtab};
  42. tabtab
  43. tab}
  44. tab
  45. tabtouch_start ( integer total_number ){
  46. tabtabstate top;
  47. tab}
  48. }


変数名が適当で分かりにくいかと思いますが、一応Customizeの中の2つだけ説明します
toppos 繰り返し回数
speed 1回で進む距離(m)

到着地点が、400mで40回に分けて進ませる場合は、
toppos = 40;
speed = 10;
と設定すればOKです。ちなみに位階に進む距離は10m以上は無理みたいです。
詳しいことはまだ分かりませんが…。

ただ、このスクリプトの書き方だと、動きがやはりぎこちないんですよね。
forceというエネルギー計算での移動方法があるようなので、今はそっちにチャレンジしています。

タグ :SLSSandbox


Posted by darkdaft at 11:14│Comments(0)Script
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。