セカンドライフプラネット

セカンドライフのスクリプト言語(LSL)をプラネットします。3DCG で物体をプラネットしたりもします。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

テレポテーション・パネルの使用方法

テレポテーション・パネル(以下、Tパネル)とは、簡易なテレポテーション装置です。
Tパネルを豊島区(toshimaku)でお配りしています。無料(0$L)です。(現在、配布していません)

TパネルはA・Bの2枚一組で使用します。必ず2枚一組でお持ち帰りください。


セカンドライフ スクリプト テレポテーション


Tパネルの特徴
●Tパネルの種類(AとB)
Tパネルは、TパネルATパネルBの2種類があります。A地点B地点をテレポートしたい場合、TパネルAA地点に設置し、TパネルBB地点に設置します。

アバターは、TパネルAとTパネルBの間をテレポテーションで行き来できます。

そのため、Tパネルは必ず2枚(AとB)一組で使用します。



セカンドライフ スクリプト テレポテーション


●簡単設置
Tパネルは、テレポテーションする座標(XYZ値)を入力することなく、簡単に設置・移動が可能です。ただし、TパネルAとTパネルB間の距離は最大100m です。 【改良済】

●簡単操作
Tパネルをタッチ(左クリック)するだけで簡単にテレポーテーション可能です。

Tパネルの使用上の注意
●Tパネルは2枚(AとB)で一組です
Tパネル1枚では正常に動作しません。必ず、2枚一組でご使用ください。

●2枚(AとB)のパネル間距離は最大100m です
TパネルAとTパネルBは、通信によりお互いの位置を記憶しています。通信できるパネル間距離は最大100m です。

●パネル設置の際の位置調整
各パネルはレズ(rez)の際と、位置変化があった際に、現在位置を相手パネルに通信します。
Tパネルを設置する際には、故意にパネル位置を動かし(微調整)、パネル間で通信させてください。【この点については、今後改良予定です】。
 【改良済】

●安定動作
Tパネルを設置した後、最初の1・2回は動作が安定しないことがあります。一旦テレポテーションに成功すると動作は安定します。【原因不明、調査中】
 【原因解明済】

●パネルの回転
パネルを設置する際に、180°回転させないでください。「」方向にテレポテーションします。

【解決済】

スポンサーサイト

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/06/29(金) 15:44:50|
  2. テレポテーション
  3. | トラックバック:0
  4. | コメント:0

ポータブル・ウォーターフォールの制作

これから夏に向かって涼しくなるように、持ち運びができる小さな滝(ウォーターフォール)を作りました。プロトタイプですが、結構いい感じでできました。

パーティクル(particle)
小さな粒子(パーティクル)の発生や動きを制御することで、火炎・雲・水しぶき、などなど多彩な自然現象・人工現象を表現することができます。CG のエフェクト(効果)で使用されることが多いです。

リンデンスクリプト言語(LSL)でもパーティクルをサポートしています。

パーティクルは、関数「llParticleSystem」を使用しますが、この関数のパラメーターが鬼のようにあります。また、各パラメーターが相互に関係していて、自分が思い描く効果を出すには試行錯誤がかかせません。

The Particle Lab
いろいろなサイトで、この場所が推薦されています。近くにテレポートして、気球に乗って行きます。画像にあるひまわりのような行き先指示盤の真ん中に「The Particle Lab」と表示されています。イスに座り、そこをクリックすると連れて行ってくれます。


セカンドライフ スクリプト パーティクル


体験学習型で「パーティクル」を学習できます。すべて英語での説明ですが、動作結果を見たり、体験できるので内容はとても分かりやすかったです。また、ただでNotecards やsample script を大量にもらえます。パーティクル関連のTexture も有料ですが販売しています。

この辺りの場所はどこも大変凝っていて一見の価値があります。

ポータブル・ウォーターフォール
最初、滝が流れる「平板」に動く水のテクスチャーを貼り、その上をパーティクルで水しぶきをエフェクト(効果)として付加する予定でした。

試行錯誤の結果、パーティクルだけでも「本物の滝」に見えるので、動くテクスチャーの貼り付けは今後の課題としました。



セカンドライフ スクリプト パーティクル



ポータブル・ウォーターフォールは豊島区(toshimaku)でお配りしています。

テレポート先は以下のとおりです。
Toshimaku(134.159.22) テレポート
注)セカンドライフを立ち上げておいてください。その後、上のテレポートをクリックしてください。

ポータブル・ウォーターフォールを右クリックして、パイメニューから「Buy」を選んでください。その後、また右クリックして、パイメニューから「take」を選んでください。無料(0L$)なのでご心配なく。

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/06/27(水) 18:18:21|
  2. パーティクルドライブ
  3. | トラックバック:0
  4. | コメント:0

テレポテーション・パネルの制作

テレポテーションとはする方法はいろいろあるみたいですが、llSetSitTarget 関数を用いてテレポテーションするのが一番簡単なようです。これは,アバターが座るターゲットを設定する関数です。

この距離が1.0m 程度ならば、アバターがイスに座る動作などでよく見られ動きですね。この距離が10m になると瞬間移動しているように見えます。

座りたいエネルギーで、自分を瞬間移動させてしまうのですね(笑)。

テレポテーションする装置が必要になったので探してみましたが、設定が複雑だったり、テレポテーションの際にパイメニューから選択する必要があったりして、使い辛いものでした。


もっと簡単にテレポテーションしたい。
と思い「テレポテーション・パネル」を制作しました。



セカンドライフ スクリプト テレポート


●2つの離れた場所を簡単に行き来できる
クリックするだけでテレポテーションする!
(パイメニューは使用しない)

●テレポテーション・パネルの設置が簡単
「建造ウィンドウ」で移動させるだけで設置完了!
(3D座標値の入力は必要なし)

テレポテーション・パネルの実装

●左クリックの処理変更
「建造ウィンドウ」の「一般タブ」の一番下にある設定を変更する。「左クリックだった場合」の設定を「オブジェクトに座る」に変更する。



テレポテーション・パネルの仕様


●テレポテーション・パネル間での通信
テレポテーション・パネルがレズした時と移動した時に、テレポテーション・パネル間で自分の3D位置を通信で教えあいます。すなわち,いつでもテレポテーション・パネルはお互いの3D位置を知っていて、テレポテーションの際にはその差だけアバターを移動させます。


テレポテーション・パネルの実機
●テレポテーション・パネルの動作確認(解決しました)
テレポテーション・パネルを移動させた後に,ためにとんでもない所に飛ばされることがあります。場所を移動させた後は、何回かテストしてください。1・2回テレポテーションが成功すると安定します。

●テレポテーション・パネルの配付(現在、配布していません)
豊島区(toshimaku)で実機を配付しています。テレポテーション・パネルは2枚で一組です。各テレポテーション・パネルを右クリックし、パイメニューから「buy」(0$L)を選択してください。その後、同じくパイメニューから「take」してください。

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/06/24(日) 18:46:09|
  2. テレポテーション
  3. | トラックバック:0
  4. | コメント:0

ロケットを横撃ち可能に改造

ライブラリーにあるロケットのスクリプトを改造しました。ロケットのスクリプトは短いですが、きれいに作られていて、スクリプトの教科書のようです。

プログラム言語一般にいえることですが、特にスクリプトの場合、一からスクリプトを作るよりも既に動いているスクリプトを改造する方がはるかに簡単です。スクリプトの勉強にもなります。

ロケットはランチャー(発射台)から呼び出され(レズされ)強制的に垂直方向に設置されます。そのため、ロケットを垂直方向以外の方向に撃つことができません。

ロケットを横撃ち可能にするため、まず、ロケットをランチャーから取り外します。そのままでは、ロケット単体では動かせないので、ロケットのスクリプトを改造して、ロケット単体で動かせるように改造します。

(1)ライブラリーからランチャーを取り出す
プレイ画面の右下にある「在庫目録」をクリックすると在庫目録が出てきます。木構造になっていますが、折りたたむと個人目録である「My Inventory」とライブラリー「Library」とになります。


セカンドライフ スクリプト Inventory Library


ライブラリーにあるランチャーがあることを確認します。
「Library」-「Objects」-「Firework Launcher」


セカンドライフ スクリプト Library


ランチャーをを地面にドラッグ&ドロップします。

(2)ランチャーの「内容」タグの表示
取り出したランチャーを「右クリック」しパイメニューから「編集」をクリックし「建造ウィンドウ」を表示します。「建造ウィンドウ」には5個のタブがあります。その中の「内容」タブをクリックします。タブが見えない場合、「簡易」表示となっているので、「建造ウィンドウ」の右下にある「全表示>>」ボタンをクリックします。


セカンドライフ スクリプト Launcher


ランチャーの中にロケット(Rocket)オブジェクトがあることが分かります。



(3)ロケットの取り出し
「建造ウィンドウ」の「内容」タブにある「Rocket」アイコンを地面にドラッグ&ドロップして取り出します。


セカンドライフ スクリプト ロケット Rocket


ロケットを取り出すと、「建造ウィンドウ」の内容もロケットの内容に変わります。ロケットの内容を以下となっています。

・スクリプトファイル
      Rocket Booster
・画像ファイル
      blue, green, smoke
・音響ファイル
      explosion, launch

ランチャーを右クリックしパイメニューから「削除」を選び、ランチャーを削除してください。


(4)ロケットのスクリプト編集
「建造ウィンドウ」にあるスクリプト(Rocket Booster)をダブルクリックしスクリプトエディターを表示します。


セカンドライフ スクリプト Rocket Booster


スクリプトの中から,on_rez イベントとtouch_start イベントを探してください。その2つのイベントに追加修正を加えます。

編集1
: on_rez イベントを無効にする
on_rez イベントをコメントアウト(// 追加)します。 以下のように,各行の先頭に「//」を追加してください。

//    on_rez(integer param)
//    {
//        if (param > 0)
//        {
//            llSetTimerEvent((float)param);
//        }
//    }   

編集2: touch_start イベントでタイマーを設定
llSetTimerEvent 関数を追加する。パラメータの5.0 はアバターがロケットをタッチしてからロケットが発射するまでの時間です。5秒後に発射する設定です。

    touch_start(integer num)
    {
        llSay(0, "Launching, please wait!");
        llSetTimerEvent(5.0);  // 追加
    }

保存: 編集結果を保存するため、スクリプトエディターの右下にある「保存」ボタンをクリックします。エラーがなければ、「Save complete.」の表示があり、保存完了です。

「建造ウィンドウ」を閉じます。


(5)ロケットを「Take」する
このまま、ロケットにタッチすると撃ち上がって消滅してしまいます。そうならないように、ロケットを右クリックしパイメニューから「Take」を選びます。改造したロケットが在庫目録の「My Inventory」-「Objects」の中にあることを確認します。


セカンドライフ スクリプト ロケット Rocket


(6)ロケットの撃ち上げ
在庫目録から「Rocket」を出してください。その後は「建造ウィンドウ」でロケットの向きなどを調整します。ロケットをタッチすると数秒後にロケットが発射します。


セカンドライフ スクリプト ロケット Rocket


元々のスクリプトに、何かに衝突した場合の処理(ロケット消滅)が組み込み済みです。なので大丈夫ですが、「人」や「建物」に向けて横撃ちしてると怒られるので注意してくださいね。

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/06/20(水) 11:55:03|
  2. LSL超初心者講座
  3. | トラックバック:0
  4. | コメント:0

浮遊ライトのスクリプト説明

前回制作した浮遊ライトのスクリプトについて説明します。豊島区(toshimaku)で、この浮遊ライトをお配りしています。


場所の検索で「toshimaku」として「テレポート」すると、中央付近にブースがあります。「buy」(0$L)の後、「take」してください。

(1)グローバル変数
4 つのグローバル変数を使用します。これらの変数は、ライトの色や強さに関するもので、llSetPrimitiveParam 関数で使用します。前回のスクリプトでは変数の設定にミスがあり、ライトがあまり明るくありませんでした。今回の値はライトの強さが最大で、太陽調整を正午にしても明るくなります。


セカンドライフ スクリプト Light


各変数は「建造ウィンドウのライト設定(Light が軽いと訳されてますが・・・)の各パラメータに対応しています。

vector Color = <1, 1, 1>;  // 色
float Intensity = 1.0; // 強さ
float Radius = 20.0; // 半径
float Falloff = 0.0; // 弱まる

「建造ウィンドウ」のパラメータを手動で調整することで、ライトの明るさの設定を「静的に」変更可能ですが、スクリプトを使用することで「動的に」変更可能になります。

(2) 関数
5 この関数を使用します。

llSetText 関数
 物体の上に文字を表示する関数
 :物体の上に白文字「ABCDEFG」を表示
  llSetText("ABCDEFG", <1,1,1>, 1.0);

llSetPrimitiveParam 関数
 「建造ウィンドウ」で調整する各種パラメータを設定する関数
  :物体のライトの強さを最大にする関数。TRUE をFALSE にするとライトが消える
   llSetPrimitiveParams([PRIM_POINT_LIGHT, TRUE,
      Color, Intensity, Radius, Falloff]);
      

llSetStatus 関数
 物体の設定を「物理」や「幻」などにする
 :物体を物理設定にする。物理設定にした物体は力(重力、浮力、衝撃力、など)を感知し、反応し、相互作用します。FAUSE は解除。
  llSetStatus(STATUS_PHYSICS, TRUE);

llSetBuoyancy 関数
 物体に及ぼす浮力を設定する
 例1:浮力(1.1)の設定。浮かびます。
   llSetBuoyancy(1.1);
 例2:浮力(0.0)の設定。全く浮かびません。重力で落下します。
   llSetBuoyancy(0.0);

llSetTimerEvent 関数
 Timer イベントが発生するまでの時間を設定する
 :3 秒後にTimer イベントを発生させる
    llSetTimerEvent(3);

(3) イベント
3このイベントがあります。

state_entry イベント
物体がレズした際の状態(default)の最初に発生するイベント

touch_start イベント
物体を左クリックした際に発生するイベント

timer イベント
llSetTimerEvent で設定した時間に発生するイベント



セカンドライフ スクリプト 状態遷移 timer


(4) 状態
4 つの状態があります。オブジェクトをクリックする度に、各状態を遷移します。

default 状態
 ・物理設定がオフ、ライトがオフ
 ・クリックすると、Buoyancy 状態に遷移

Buoyancy(浮力)状態
 ・物理設定がオン、ライトがオン
 ・タイマーを3秒に設定し、Floatage 状態に遷移
 ・3 秒間、浮き上がる

Floatage(浮遊)状態
 ・3 秒後に、物理設定がオフ、ライトがオン
 ・浮遊している
 ・クリックすると、Gravity 状態に遷移

Gravity(重力)状態
 ・物理設定がオン、ライトがオフ
 ・物体が落下する
 ・クリックすると、Buoyancy 状態に遷移

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/06/18(月) 15:56:02|
  2. キャンプタイマー
  3. | トラックバック:0
  4. | コメント:0

浮遊ライト配ってます

前回作成方法を説明した、浮遊ライト(Floating Light)を、豊島区でお配りしています。


セカンドライフ スクリプト Float Light


テレポート先は以下のとおりです。
Toshimaku(134.159.22) テレポート
注)セカンドライフを立ち上げておいてください。その後、上のテレポートをクリックしてください。

浮遊ライトを右クリックして、パイメニューから「Buy」を選んでください。
無料(0L$)なのでご心配なく。

 浮いたり沈んだりする仕組み(スクリプト)は、前回の「浮遊ライトをつくりました」で公開しています。

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/06/16(土) 23:08:49|
  2. キャンプタイマー
  3. | トラックバック:0
  4. | コメント:0

浮遊ライトをつくりました

前回制作した「空中工房」にライトがほしいと思い、「浮遊ライト」を制作しました。

浮遊ライト
1.クリック(左マウスボタン)すると、明るくなり上昇する。
2.一定時間後に上昇が止まる。
3.もう一度、クリックすると明かりが消えて落ちてくる。

浮遊ライトの制作
以下の手順で「浮遊ライト」を制作してください。
1.適当なオブジェクト(プリム)を制作する
2.「建造ウィンドウ」からスクリプトを入力する
具体的な方法は本ブログの以前の記事を参照してください。


セカンドライフ スクリプト Float Light



3.スクリプトを記述するところに、以下のソースをコピーする

// ---------------------- スクリプト スタート --------------------------------
vector Color = <1, 1, 1>;
float Falloff = 2.0;
float Intensity = 20.0;
float Radius = 2.0;

default   // 物理オフ状態
{
    state_entry()
    {
        llSetText("Light:OFF, Physics:OFF", <1,1,1>, 1.0);
        llSetPrimitiveParams([PRIM_POINT_LIGHT, FALSE, Color, Intensity, Radius, Falloff]);   
        llSetStatus(STATUS_PHYSICS, FALSE);
        state buoyancy;
    }
}

state buoyancy  // 物理オン状態(浮力)
{
    touch_start(integer t_num)
    {
        llSetText("Light:ON, Physics:ON(Buoyancy)", <1,1,1>, 1.0);
        llSetPrimitiveParams([PRIM_POINT_LIGHT, TRUE, Color, Intensity, Radius, Falloff]);
        llSetBuoyancy(1.1);
        llSetStatus(STATUS_PHYSICS, TRUE);
        llSetTimerEvent(3);
        state  floatage;       
    }
}

state floatage  // 物理オフ状態(空中停止)
{
    timer()
    {
        llSetText("Light:ON, Physics:OFF(Floatage)", <1,1,1>, 1.0);
        llSetStatus(STATUS_PHYSICS, FALSE);   
        state gravity;
    }
}

state gravity  // 物理オン状態(重力)
{
    touch_start(integer t_num)
    {
        llSetText("Light:OFF, Physics:ON(Gravity)", <1,1,1>, 1.0);
        llSetPrimitiveParams([PRIM_POINT_LIGHT, FALSE, Color, Intensity, Radius, Falloff]);   
        llSetStatus(STATUS_PHYSICS, TRUE);
        llSetBuoyancy(0.0);
        state buoyancy;
    }
}
// ---------------------- スクリプト エンド --------------------------------


セカンドライフ スクリプト Float Light


実験
実験風景です。上昇が止まらなく飛んでいってしまうことがあったので、空中工房を上下2つ使用しています。

各種パラメータには、力(浮力、重力)の大きさ、浮遊時間、ライトのオン・オフ、文字表示する・しない、等がありますが、適宜修正してください。

「浮遊ライト」をうまく動作させるにはコツがいります。少し長めにクリックしてください。

今回の「浮遊ライト」はプロトタイプなのでエラー処理が入っていません。典型的な例として、何かの拍子に飛んでいってしまうことがあります。その辺のエラー処理(リミット処理)は今後の課題です。飛んでいってしまっても怒らないでください(笑)。

このスクリプトの説明は次回にしたいと思います。

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/06/14(木) 12:33:41|
  2. キャンプタイマー
  3. | トラックバック:0
  4. | コメント:0

空中工房をつくりました

セカンドライフの場合、スクリプト言語(リンデンスクリプト)を利用するには、まずスクリプトを入れる3D 物体を作る必要があります。

どこか適当な建造場所(sandbox)で、3D 物体を作ると、その瞬間にその物体は建造場所に現れます。このことを、物体がレズ(rez)したとか、物体のレジングとかいいます。

物体がレズすると、それは創造者であるプレイヤーのみならず、
その場(sandbox)を共有している他のプレイヤーからも見えるし触れられる存在となります。

「物体のレジング」という発想、それを実装したセカンドライフとは、とても斬新です。

ただそのため、スクリプト作業をいろいろとやっていると、話しかけられるのは全然OKなのですが、突然撃たれたり、車にひかれたり、遠くに突き飛ばされたりするのは迷惑です(笑)。
それでもアバターがけがをする訳でもないのでいいといえばいいのですが、「元の位置まで戻る」のが大変です。


そこで、空中に工房を作りました。これなら安心!


セカンドライフ スクリプト 空中工房



「建造ウィンドウ」の使い方は、いろいろなHP や書籍で紹介されています。


「Alt」キー、「Ctrl」キー、「Shift」キーを使用することで、アバターに依存しないでカメラを単独で移動させることができます。3D 物体を作成する際には必須のテクニックだと思います。


空中工房は以下の仕様で制作しました。
必要最低限の機能をもつ。
 アバターが作業中に地上に落ちない。 広い床面積を持つ。
地上や周りが気になるので、床面と壁一面は透明にする。
 床面と壁一面の透明度は40% とする。


空中工房の完成です。なかなか良さそう。アバターも気に入った様子です。


セカンドライフ スクリプト 空中工房


天気が良い日は海が見える場所に・・・。空中工房を移動させました。上空からも波が動いているのが良く見えます。気分爽快!


セカンドライフ スクリプト 空中工房


これから夏に向かって暑くなるので作業は深夜にしましょう。画面ではよく見えないのですが星空がきれいです。少し風もふいていてすずしいです。月も出ています。


セカンドライフ スクリプト 空中工房


空中工房は今後も「改造」していきます。どこかの空中で見かけた時には遊びに来てください。

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/06/10(日) 00:15:24|
  2. 商品制作講座
  3. | トラックバック:0
  4. | コメント:0

LSL101 状態とイベント

超初心者向けチュートリアル(LSL101)の第2章です。原文では第2章はなく、状態とイベントという名前の章になっています。英語が得意な人は、原文を見ると詳しく記述されてます。

これまでと同様に、Yahoo! の機械翻訳を元に、意訳しながら作業を進めています。あまり英語が得意でない方はこのブログを参考にしてください。

状態とイベント


LSL アーキテクチャー
LSL スクリプトは以下のようになっています。
●グローバル変数と関数(あなたはまだこれらを知りません)
●少なくとも一つのdefault 状態。任意に、さらなる状態
●各状態には一つ以上のイベント


プログラミング経験があれば、フローチャート(他の言語でプログラムを設計するためのグラフィックな道具)に精通しているでしょう。
しかし、LSL スクリプトで役に立つグラフィックな道具は、状態とイベントの行列です。


以下に例証します。

default
{
  state_entry()
  {
    llSay(0, "Hello, Avatar!");
  }

  touch_start(integer tnum)
  {
    llSay(0, "Touched.");
  }
}


セカンドライフ スクリプト 状態 イベント

最も左のコラムは、「イベント」にリストされます;「状態」(このスクリプトは、1つの状態を持っています)は、一番上の列にリストされます。
イベントと状態が交差するところで,イベントがこの状態ですることについての簡潔なメモを書くことができます。

思い出してください。このスクリプトはほとんど何もしません;それは,ちょうどあなたが書きたいスクリプトのテンプレートとして用いられます。



2つの状態、何と言う考え!


例はここにあります;むずがゆ箱
あなたがそれにさわる最初の時、それはあなたに再びさわるように頼みます。
次にそれにさわると、その箱はあなたに感謝します。むずがゆ箱の行列は、以下のようになります。


セカンドライフ スクリプト 状態 イベント


いくつかの状態を定義する方法


例えば、「tickled」状態を定義するには以下の書式です。


state tickled
{
 ・・・
}


 一つの状態からもう一つの状態に遷移(移動)する方法
状態#1 の適当なイベントの中に、状態#2 に遷移しなさいという「状態遷移」命令を使ってください。


例えば、「tickled」状態に遷移する命令は以下の書式です。


state ticked;



挑戦:むずがゆ箱
申し訳ありません。ここで全部の「むずがゆ箱」スクリプトが記述されていると思いましたか?ハハ、あなたはとても愚かです。それはあなたの任務です!世界の中で(どこかのsandboxで)箱を作成し,それの中でスクリプトを作成してください。
以下の挑戦は作業をより面白くします。


●話しをする部分で,llSay 以外の関数を使用してください。


●「状態移動」命令以外の手段で,ticked 状態からdefault 状態に移動してください(ヒント;スクリプトをリセットしたとき、スクリプトはどの状態になりますか?)


あなたが挑戦を達成した(または,ヘルプが必要な)とき、解決は以下のURLにあります。覗かないこと!
http://rpgstats.com/wiki/index.php?title=LSL101solutions#States_And_Events_Challenge:_Tickle_Box



やってみました:むずがゆ箱
作業風景の画像です。今回はあまりチョッカイをだされませんでした。
髪の綺麗な(ピカッピカッ光る)女性アバターがやってきたので、5分ほど話しました。完成したむずがゆ箱を見て、これはとてもすばらしい。お父さんのおみやげにしたいので、500,000L$ でゆずって欲しいといってきたので、「hito de nasi !」、「kono ko ha watasi no ko yo !」とやってたら去っていきました。
llSay 関数はチャンネルがゼロの場合、半径約20m 内のアバターやオブジェクトに、会話がが聞こえます。そのため、近くの人は面白がって寄ってくるのかな~・・・、ヤレヤレ(*.*)。今度から、llOwnerSay 関数を使おうかな・・・、でも、まったくチョッカイだされないのも、サ・ミ・シ・イ・しー(どっちやねん!)。


セカンドライフ スクリプト サンドボックス


むずがゆ箱をタッチ(マウスで左クリック)すると、「Now, touch me again.」と返事します。また、タッチすると、「Thank you! That felt good.」と返事します。その後もタッチする度に交互に返事内容を変えて返事します。そうなれば完成です。おめでとう!


セカンドライフ スクリプト Tickle Box


完成したうれしさのあまり、何回もタッチしていると周りの人に気づかれるので注意!

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/06/07(木) 16:45:50|
  2. LSL101-2
  3. | トラックバック:0
  4. | コメント:0

LSL101 第1章 こんにちは、アバター!(その3)

LSL101 第1章 こんにちは、アバター!(その2)の続きです。

ファンクション(関数)
llSay から始まっているステートメントは、関数 llSay への呼び出しです。関数は、それが欲しい情報を与えるとき、面白い何かをする名前を付けられたコードブロックです。関数は,あなたのスクリプトの中に位置するコードブロックであるかもしれません;または,それは「共有な場所であなたのスクリプトの外側に位置するかもしれません」


名前が2つの小文字のL から始まる関数は、SL環境にあるリンデン関数です。llSay はリンデン関数です。



セカンドライフ スクリプト New Script



パラメータ
関数が欲している情報という部分は,パラメータと呼ばれています。


関数llSay

state_entry()
{
  llSay(0, "Hello, Avatar!");
}


llSay は、およそ20m離れた物体やアバターに「聞くことができる」チャンネル上のテキストチャットができる関数です。
llSay は、2つのパラメータ(チャンネルとテキスト)が与えられることを予想します。非ゼロのチャンネルは、2つの(またはより多くの)物体間での、個人的なコミュニケーションに役立ちます。


チャットのテキストは、ダブルコーテーション( " )で囲まれます。


touch_start イベント

touch_start(integer total_number)
{
  llSay(0, "Touched.");
}


その名前(touch_start)にパラメータリストが続くので,このイベントは関数呼び出しのように見えますがイベントです.パラメータのリストは変数を含みます:整数total_number


関数と同様に,この変数は,パラメータ値にセットされます。セカンドライフは、イベントにパラメータを供給します。イベントで定められているとき、変数はシミュレーションがとった措置によって値を与えられます。特にお金のようなイベントでは、これは非常に役に立ちます。この場合、total_number は,その時物体にさわっている人々の数を定めます。「さわっている人々」の数を知っていることの長所は、今は疑わしいかもしれません。いつか,あなたがそれを知っていてうれしいと思っていてください。


llSay 関数が物体のパイメニューの「タッチ」がどんなユーザにでもクリックされるとあらゆる場合に「Touched.」と叫んでいます。


おめでとう!あなたは,最初のスクリプトをうまく解読しました!

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/06/05(火) 23:50:32|
  2. LSL101-2
  3. | トラックバック:0
  4. | コメント:0

LSL101 第1章 こんにちは、アバター! (その2)

LSL101 第1章 こんにちは、アバター!(その1)の続きです。

建造ウィンドウの右下にある「全表示」ボタンをクリックします。


セカンドライフ スクリプト 建造ウィンドウ


タブが5枚あります。その中の「内容」タブを選択します。そして、内容タブの左上方にある「新しいスクリプト」ボタンをクリックします。木構造の「Contents」の下に「New Script」ができたことを確認します。


セカンドライフ スクリプト 建造ウィンドウ




「New Script」の部分をダブルクリックすると、スクリプトエディターが表示されます。


セカンドライフ スクリプト スクリプトエディター


スコープ(または、コードブロック)
一対の開中括弧( { )と閉中括弧( } )との間をスコープ(または、コードブロック)と呼びます。スコープは、より小さなスコープを内蔵することができます。上のスクリプトの例では、default のスコープは、state_entry のスコープとtouch_start のスコープを内蔵しています。開中括弧で開かれたあらゆるスコープは閉中括弧で閉められなければなりません。

default 状態
上のスクリプトで見る最初のものは、「default」という言葉です。これは、「状態」と呼ばれています。全てのLSL は一つのdefault 状態を持つ必要があります。LSL は複数の「状態」をもつことができます。状態についての詳しい説明は後ほど。状態とは、適切な名前をつけられたコードブロックです。


イベント
イベントは、Second Life の中で起こる何かによって引き起こされる、名前をつけられたコードブロックです。

state_entry イベント

state_entry()
{
    llSay(0, "Hello,Avator !");
}

default 状態に記述されているstate_entry イベントを起こす方法は以下です。

1)スクリプトをコンパイル(保存)する
例えば、スクリプトエディターで、"Hello, Avator !"を"Hello, Master !"に修正して、保存ボタンを押してみてください。コンパイルが終わり、今いるsandbox にセーブが完了する(rez される)と、オブジェクト(Object)から、以下のチャットメッセージが現れます。

Object:: Hello, Master !

2)スクリプトをリセットする
LSL は、あなたにスクリプトをリセットするために使用できる関数(llResetScript)を提供します。

ステートメント(声明)
「llSay」で始まっている一行はステートメントです。各々のステートメントは、セミコロン( ; )で終わらなければなりません。

パーシステンス(持続)
物体をさわると、「Hello, Avator !」と再び答える代わりに「Touched」といいます。答えは、touch_start イベントから来ます。なぜ、state_entry イベントは答えませんでしたか?

1)あなたはその物体にさわったので、それはそれが反応したイベントです。
2)その新しいスクリプトは終了していません。それはまだdefault 状態にあります。そして、二度とdefault 状態のstate_entry イベントを起こすことはありませんでした。あなたが、SL を終了し再接続すると、そのスクリプトはまだそこにいてdefault 状態が続いていることが解るでしょう。


 

テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/06/05(火) 02:06:38|
  2. LSL101-2
  3. | トラックバック:0
  4. | コメント:0

LSL101 第1章 こんにちは、アバター! (その1)

LSL101 は本当によくできたチュートリアルだと思います。


LSL101 にそって実際にLSL を動作させてみます。


sandbox へのテレポート


sandbox 以外の場所で「オブジェクト:物」を制作していると怒られるので、まず、適当なsandbox にテレポートしてください。


・・・sandbox の探し方


「検索」機能を使って探します。「検索」ボタンは、セカンドライフ画面の下方、「飛ぶ」ボタンや「スナップ」ボタンの近くにあります。「検索」ボタンをクリックすると検索のプルダウンメニューが表示されます。そのメニューの「場所」タグを選び、検索窓に”sandbox”と入力し、検索ボタンをクリックします。


・・・sandbox について


リストの上位にあるsandbox に行けば問題ないと思いますが、場所によってはチョッカイを出されることもあります。そんなときは、「kora, kora」とか、「acchi ni ike ! si, si…」とチャットするといなくなります。


 


オブジェクトの制作


LSL はオブジェクトに付随しているものなので、まずオブジェクトを制作します。オブジェクトの制作方法については、他のHP や書籍などで詳しく説明されているので、簡単に説明します。




(1)オブジェクトの生成
マウスを地面の何もないところへ移動し、右クリックします。すると、パイ状のメニュー画面(パイメニュー)が現われます。


セカンドライフ スクリプト サンドボックス


パイメニューの「生成」を選択し、そのまま何もない地面をクリックすると立方体オブジェクトが生成されます。同時に、プルダウンメニューが表示されます。


セカンドライフ スクリプト サンドボックス




 


セカンドライフ スクリプト 建造ウィンドウ




(2)オブジェクトの修正


オブジェクトを生成すると、プルダウンメニューは自動的に編集モード「編」になります。プルダウンメニューが消えたときは、生成したオブジェクトを右クリックしてパイメニューを表示するとその中に「編集」がありますので、それを選択します。


生成物体の位置移動や回転、引き伸ばしなどの編集ができます。直感的に操作ができるので難しくはないでしょう。いろいろとトライしてみてください。
 


セカンドライフ スクリプト サンドボックス




位置の移動
x 軸(赤)y 軸(緑)z 軸(青)の各軸毎にそれぞれの色の付いた「立体矢印」が表示される。その矢頭をドラッグすることでオブジェクトを移動させる。

回転
各軸毎にそれぞれの色の付いた「立体リング」が表示される。そのリングをドラッグすることでオブジェクトを回転させる。
 


引き伸ばす
各軸毎にそれぞれの色の付いた「小立方体」が表示される。その立方体をドラッグすることでオブジェクトを引き伸ばす。


テーマ:セカンドライフ - ジャンル:オンラインゲーム

  1. 2007/06/02(土) 21:18:40|
  2. LSL101-2
  3. | トラックバック:0
  4. | コメント:0

プロフィール

Aa

Author:Aa
SLプラネットへようこそ!
Koenjiで物づくりしてます。
皆さん、遊びにきてください。

ショップのSLURL

ショップ(白屋)のSLURLです。メタバーズの高円寺にあります。商品を展示販売しています。

メタバーズ、高円寺、白屋

最近の記事

月別アーカイブ

カテゴリー

ブログ内検索

おすすめ商品!


パソコンの横において、疑問点をサッと調べられます!...



オブジェクト制作を基礎から解説!販売方法も詳しく記述!...



すぐに使えるサンプルプログラムを多数収録!...



関数の詳しい記述あり!辞書のように便利!...

ゲームPC

ゲーム用パソコンならドスパラへ!Galleriaシリーズが大人気!

リンク

このブログをリンクに追加する

スポンサードリンク

スポンサードリンク

最近のコメント

最近のトラックバック

RSSフィード

FC2カウンター

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。