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

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

スポンサーサイト

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

懸賞生活に掲載!(Particle Drive HUD)

「週刊懸賞生活」の第26号(1月27日発行)で、Particle Drive HUD を掲載していただけることになりました!

Particle Drive HUD はオリジナルパーティクルを制作する装置です。クリエイターさん向けのツール商品です。操作は簡単で、パーティクル初心者から上級者までご利用いただけます。

セカンドライフ 懸賞生活 パーティクル

抽選で1名様にプレゼントです。


●Particle Drive HUD の特徴
(1)どこでも使用できます
HUD(Head Up Display)に装着するので作業場所を選びません。
キャンプしながら作業できます。
(2)初心者でも大丈夫
すぐに使えるパーティクルのヒナ型を10種類用意しました。パーティクルのヒナ型を少しアレンジするだけで自分オリジナルのパーティクルを作れます。パーティクルのヒナ型は今後種類を増やしていきます(0L$配布)。
(3)上級者対応
Particle 関数の全パラメーターに対応しています。SL内でのあらゆるパーティクルを作成できます。面倒なコンパイル作業が不要で、リアルタイムにパラメーター修正できます。
(4)充実したユーザーフォロー
スクリプト初心者対象に「スクリプトTips講習会」を開講(0L$)しています。商品へパーティクルを組み込む方法が分かります。Particle Drive HUD 専門の講座も開講(有償)しています。
また、ブログでParticle Drive HUD の具体的な使用方法を紹介しています。その際、パーティクルのヒナ型を順次発表し無償で配布しています。


●Particle Drive HUD (YouTube動画)
ビューワー左上にパーティクルドライブHUD を装着しています。

 

Particle Drive HUD の詳細につきましては、
本ブログのカテゴリー(パーティクルドライブ)をご参照ください。
http://gameworkshop.blog106.fc2.com/category8-2.html


●展示販売
MagSL - Tokyo2 - ToshimaKu の中央にあるSIROYA(レンガ壁)にてParticle Drive HUD 本体を展示販売しています。本来はHUD(Head Up Display)に装着するものですが、外に出して展示しています。
http://slurl.com/secondlife/ToshimaKu/153/175/22

同時に、本装置で作成したパーティクル例を展示しています。屋外には大型パーティクル(雲、雨、爆発、など)、屋内には小型パーティクル(宝石、火炎、看板、など)を展示しています。

また、本ツールを使いこなすための「ラーニング付きParticle Drive HUD」も同時販売しています。
(注)ラーニングはeラーニングではなく、SIM 内での実地講習です。


●「週刊懸賞生活」マガジン
「週刊懸賞生活」マガジンはお近くの配布スタンドをクリックすることで入手できます。

Game Forum にも配布スタンドがありますのでご利用ください。
http://slurl.com/secondlife/Game%20Forum/146/123/22

セカンドライフ 懸賞生活 配付スタンド

「週刊懸賞生活」への申込方法等は、
「セカンドライフ(Second Life)の懸賞生活日記」をご覧ください。
http://ameblo.jp/secondlife-kensho/
スポンサーサイト

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

  1. 2008/01/22(火) 22:52:32|
  2. パーティクルドライブ
  3. | トラックバック:0
  4. | コメント:1

スクリプトTips制作(Particleカラー・ピッカー)

パーティクルの色を、建造ウィンドウの「カラー・ピッカー」を利用して簡単に変化させるTips です。 フルカラー(1,670万色)指定できます。
建造ウィンドウで適当なプリムを制作し、以下のLSL-Tips を組み込んでください。
(例:一辺0.1mのボックス)

(注)Tips をコピー&ペーストするだけで動きます


1.Particle カラー・ピッカーのスクリプト
changeColor(vector color)
{
    llParticleSystem([
        PSYS_PART_FLAGS, PSYS_PART_EMISSIVE_MASK,
        PSYS_SRC_PATTERN, PSYS_SRC_PATTERN_EXPLODE,
        PSYS_PART_START_COLOR, color,
        PSYS_PART_MAX_AGE,0.8,
        PSYS_SRC_BURST_PART_COUNT,3,
        PSYS_PART_START_SCALE,<0.3, 0.3, 0.0>
    ]);
}  

default
{
    changed(integer change)
    {
        if (change & CHANGED_COLOR)
        {
            vector color = llGetColor(ALL_SIDES);
            changeColor(color);
        }
    }
}


●Particle カラー・ピッカーの配布
スクリプト組込済みのオブジェクト(Particleカラー・ピッカー)を無料配布しています。サイズやテクスチャーなど自由に変更できます。スクリプトも見られるので、いろいろと改良を加えてみてください。
Game Forum:http://slurl.com/secondlife/Game%20Forum/210/204/22

(注)オブジェクトを購入(0L$)してオーナーになると、サイズやスクリプトの修正が可能になります。

セカンドライフ パーティクル カラー ピッカー


●Particle カラー・ピッカーの使い方
下の写真は、「Particle カラー・ピッカー」を使用しているところです。Particle カラー・ピッカーをアバターの右肩に装着して「編集」しています。画面右のウィンドウが「建造ウィンドウ」で、画面左のウィンドウは「カラー・ピッカー」です。

secondlife particle color picker

以下、詳しい操作手順です。

◇プリム取り出し
プリムを「持ち物」から取り出します。地面に取り出せない場合は、アバターに装着します(例:右肩)。装着後、位置を移動させます(例:右肩から少し離す)。
◇建造ウィンドウ表示
プリムを右クリックしパイメニューから「編集」を選択します。建造ウィンドウが表示されます。
◇カラー・ピッカー表示
建造ウィンドウの「テクスチャー」タブを選択します。タブが表示されていない場合は右下の「全表示>>」ボタンをクリックします。次に、テクスチャータブの「色」アイコンをクリックします。
◇カラー・ピッカー操作
カラー・ピッカーを操作することでパーティクルの色が変化します。変化しない場合は、カラー・ピッカーの左下にある「ただちに適用」チェックボックスにチェックを入れてください。

カラー・ピッカーの簡易説明(詳しい説明は今回省略します)
・右端に縦長くあるスライドバー
これは「輝度」を指示するインタフェースです。初期値では値が「0」になっている場合がありますので、その場合は適当な値(50)に設定してください。
・真ん中にある大きな正方形領域
横方向が「色相」で縦方向が「色調」です。マウスを真横に移動させると色相が変化します(色調一定)。マウスを縦に移動させると色調が変化します(色相一定)

【使用上の注意】とりあえず、最初に一度プリムの色を変化させないとパーティクルは発生しません。その際、輝度が「0」になっていないことを確認してください。


2.スクリプトの解説
本講座(LSL-Tips制作講座)は、LSL超初心者講座の次ステップとしての位置づけとなっています。
以下で、スクリプトの内容を説明します。


●関数
http://rpgstats.com/wiki/index.php?title=Ja:functions

    llParticleSystem(list parameters)
http://rpgstats.com/wiki/index.php?title=Ja:llParticleSystem
多数のパラメータの組み合わせにより多彩なパーティクルを生成する関数です。

    vector  llGetColor(integer  face)
http://rpgstats.com/wiki/index.php?title=LlGetColor 
プリムの面番号をパラメータとし、その面の色をベクトル型<, , >で返します。
定数(ALL_SIDES)はプリムの全ての面を意味します。


●ユーザー定義関数

    changeColor(vector  color)
ベクトル型の色(color)をパラメータとして受け取り、llParticleSystem関数に渡すことで、パーティクルの色をその色に変化させます。


●イベント
http://rpgstats.com/wiki/index.php?title=Ja:events

    changedイベント
http://rpgstats.com/wiki/index.php?title=Changed 

    changed(integer change)
    {
        if (change & CHANGED_COLOR)
        {
            vector color = llGetColor(ALL_SIDES);
            changeColor(color);
        }
    }

プリムに何らかの変化が生じた場合に「changed」イベントが動きます。パラメータ(change)の値をチェックすることで何の変化が起きたかが分かります。

以下の例では、定数(CHANGED_COLOR)と比較することで、「色変化」を生じた場合にif文の本体が実行されます。 

        if (change & CHANGED_COLOR)
        {
            vector color = llGetColor(ALL_SIDES);
            changeColor(color);
        }

if文の本体では、llGetColor関数を用いて色変化した後の色を検出します。そして、ベクトル型で返ってくる色を変数(color)に代入します。最後に、changeColor関数をよびます。


●考察・課題
パーティクルの色を、自分が想像した色にするのは結構難しい作業です。効率よく作業するためには、「カラー・ピッカー」のようなUI(ユーザーインターフェース)が必要になります。今回のTips は、既存のカラー・ピッカーをパーティクルの色付け作業に利用する方法です。 課題として以下があります。
◇別パーティクルへの実装
今回の方法を別のパーティクルに対して実装してみてください。
◇「ピック・テクスチャー」の利用
建造ウィンドウの「テクスチャー」タブでは、色の指定(カラー・ピッカー)の左隣にテクスチャーの指定(ピック・テクスチャー)があります。ピック・テクスチャーで指定したテクスチャーをパーティクルに反映させるプログラムを制作してみてください。
ヒント:定数(CHANGED_TEXTURE)、llGetTexture関数を使用

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

  1. 2008/01/11(金) 16:15:24|
  2. 話題
  3. | トラックバック:0
  4. | コメント:0

週刊懸賞生活に掲載されます

「週刊懸賞生活」の第24号(1月13日発行)で、Camping Timer を掲載していただけることになりました!

Camping Timer はキャンプのときに便利なタイマーです。

セカンドライフ キャンプ タイマー


抽選で3名様にプレゼントです。


●Camping Timer の特徴
一定時間ごとに繰り返し音でお知らせ
音もれゼロ(自分以外聞こえません)
サイズ、形状、色、など変更可能

・クリックのみの簡単操作
・時間設定可能
・経過時間表示

HUD使用可
「おどりのバイト」などで、Camping Timer を装着しての操作が困難な場合、HUD(Head Up Display)に装着していただくことで操作が容易になります。

Camping Timer の詳細につきましては、本ブログのカテゴリー(キャンプタイマー)をご参照ください。


●「週刊懸賞生活」マガジン
「週刊懸賞生活」マガジンはお近くの配布スタンドをクリックすることで入手できます。

SL Game Forum にも配布スタンドがありますのでご利用ください。
http://slurl.com/secondlife/Game%20Forum/146/123/22

セカンドライフ 懸賞生活 配付スタンド

「週刊懸賞生活」への申込方法等は、
「セカンドライフ(Second Life)の懸賞生活日記」をご覧ください。
http://ameblo.jp/secondlife-kensho/

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

  1. 2008/01/10(木) 16:05:16|
  2. ロケット改造
  3. | トラックバック:0
  4. | コメント:0

スクリプト超初心者講座(関数2)

関数の2回目は、関数のパラメータについての説明です。前回の関数1回目では、パラメータの無い一番簡単な関数について説明しました。

パラメータのある関数例を以下に示します。

関数名「abc」の後に小カッコ()があります。その中にあるローカル変数がパラメータです。

abc(integer  a)
{
  llSay(0, "Hello");
}

◇関数名: abc
◇パラメータ: 整数型(integer)でパラメータ名は「a
◇関数本体: llSay(0, "Hello");

また、パラメータは「引数」と訳されます。


●仮引数と実引数
まず、以下の簡単なプログラムを説明します。

say(string  s)                               // 関数定義
{
      llSay(0,  s);
}

default
{
      state_entry()
      {
            say("Good morning");       // 関数使用
            say("Good afternoon");
            say("Good night");
      }
}

------------------------------------------------------------
関数は、定義(関数定義)して、使用(関数使用)します。

関数定義
以下の内容の関数を定義します。
◇関数名: 「say」
◇パラメータ: 文字列型、「s
◇関数本体: llSay(0,  s);

関数使用
State_entry イベントの中で関数を使用します。
------------------------------------------------------------

パラメータ(引数)には、仮引数と実引数があります。

◆仮引数
関数定義中に使われるパラメータ(引数)を仮引数といいます。上記プログラムでは「s」が仮引数です。
仮引数は関数を定義するために使われます。そのため、仮引数は任意の名前で構いません。
例えば、仮引数を「a」としてもOKです。その場合、関数は以下となります。

say(string  a)
{
      llSay(0,  a);
}

◆実引数
関数使用中に使われるパラメータ(引数)を実引数といいます。上記プログラムでは、say("Good morning"); の実引数は"Good morning" です。引数が実際のデータとなるので実引数とよびます。


●関数定義と関数使用
関数定義と関数使用の構造をまとめておきます。

関数名(型  仮引数)    // 関数定義
{
   関数本体
}

・関数定義は全てのステートの外、グローバル変数を定義するところと同じところに記述します。defaultステートの前です。

   関数名(実引数);    // 関数使用

・関数は何らかのイベント(例:state_entryイベント)の中で使用します。


●プログラム1(時間によりあいさつが変化する関数)

◇関数名: sayHello
◇仮引数: time
◇関数本体: 6時から10時の間は「Good morning」と、それ以外は「Hi」とチャットする

sayHello(integer  time)
{
      if (time>6  &&  time<10)
      {
            llSay(0,  "Good morning!");
      }
      else
      {
            llSay(0,  "Hi");
      }
}

default
{
      state_entry()
      {
            sayHello(9);
            sayHello(15);
            sayHello(21);
      }
}

◆課題1
(1)適当なプリムに上記プログラムを入れてコンパイル実行してください。
(2)上記プログラムの実引数は何でしょうか?
(3)上記プログラムの関数を、17時から24時の間は「Hello」とチャットするように修正してください。
ヒント:else if 文を使用します


●プログラム2(土地面積からプリム数を計算する)

◇関数名: numOfPrim
◇仮引数: area(土地面積)
◇関数本体: 土地面積からプリム数を計算する。

SIMは一辺256m の正方形をしていて、その全体面積は65,536㎡(256m×256m)です。SIM全体に置けるプリム数は15,000個です。プリム数は以下の簡単な比例式で計算しています。

     プリム数 = 15,000 * 土地面積 / 65,536

numOfPrim(integer area)
{
      float  work = 15000 * (float)area / (256*256);
      integer  num = (integer)(work + 0.5);           // 小数点以下を四捨五入
      llOwnerSay("Area:" + (string)area + "sqm -> Prim:" + (string)num);
}

default
{
      state_entry()
      {
            numOfPrim(65536);
            numOfPrim(4096);
            numOfPrim(2048);
            numOfPrim(1152);
            numOfPrim(784);
            numOfPrim(512); 
      }
}

◆課題2
(1)ボックスを作成し、上記プログラムを入れてコンパイル実行してください。
(2)上記プログラムの実引数は何でしょうか?
(3)土地レンタルしている(考えている)人は、自分の(候補地の)土地面積で計算してみてください。

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

  1. 2008/01/07(月) 01:20:22|
  2. LSL-Tips集
  3. | トラックバック:0
  4. | コメント:0

スクリプト超初心者講座(関数)

今回から数回に渡って、「関数」について簡単なところから説明していきたいと考えています。

関数は大別すると「ユーザー定義関数」と「組み込み関数」があります。

ユーザー定義関数は、ユーザーが定義して使用する関数です。一方、組み込み関数は、LSL に最初から用意してある関数です。

既に使用してきたllOwnerSay 関数などが、組み込み関数です。頭に「ll」が付くのが特徴です。

最初は簡単なユーザー定義関数から始めたいと思います。

■プログラム1
以下に、オブジェクトをコンパイルした際に、各国の言葉で「こんにちは」というプログラムを示します。

default
{
  state_entry()
  {
    llOwnerSay("hello");
    llOwnerSay("kon nichi wa");
    llOwnerSay("an nyon hase yo");
    llOwnerSay("ni hao");
    llOwnerSay("guten tag");
    llOwnerSay("bonjour");
  }
}


■プログラム2
このプログラムを関数を使用して書き換えてみます。

sayHello()                                       // ユーザー定義関数の定義
{
  llOwnerSay("hello");
  llOwnerSay("kon nichi wa");
  llOwnerSay("an nyon hase yo");
  llOwnerSay("ni hao");
  llOwnerSay("guten tag");
  llOwnerSay("bonjour");
}

default
{
  state_entry()
  {
    sayHello();                              // ユーザー定義関数の使用
  }
}

2つのプログラム(プログラム1とプログラム2)を見比べてください。


●一番簡単なユーザー定義関数
一番簡単なユーザー定義関数は以下の構造をしています。 

  関数名()
  {
    関数本体
  }

上記構造とプログラム2を比べると、関数名が「sayHello」で、関数本体は6個のllOwnerSay関数であることが分かります。


●ユーザー定義関数を定義する場所
ユーザー定義関数を定義する場所は、グローバル変数を定義した場所と同じ場所です。default ステートなどのステートの外側で定義します。


●ユーザー定義関数の使用
ユーザー定義関数はイベント中で使用します。以下の構造をしています。

  関数名();

プログラム2を見ると、state_entry イベント中でsayHello関数を使用しています。


■プログラム3
オブジェクトをコンパイルしたときとタッチしたときに、各国の言葉で「こんにちは」というプログラムを示します。

default
{
  state_entry()
  {
    llOwnerSay("hello");
    llOwnerSay("kon nichi wa");
    llOwnerSay("an nyon hase yo");
    llOwnerSay("ni hao");
    llOwnerSay("guten tag");
    llOwnerSay("bonjour");
  }

  touch_start(integer t_num)
  {
    llOwnerSay("hello");
    llOwnerSay("kon nichi wa");
    llOwnerSay("an nyon hase yo");
    llOwnerSay("ni hao");
    llOwnerSay("guten tag");
    llOwnerSay("bonjour");
  }
}

同じ内容のコードが重複していて、冗長になっています。


■プログラム4
プログラム3を関数を利用して書き換えてください。

◇解答例を以下に示します。

sayHello()
{
  llOwnerSay("hello");
  llOwnerSay("kon nichi wa");
  llOwnerSay("an nyon hase yo");
  llOwnerSay("ni hao");
  llOwnerSay("guten tag");
  llOwnerSay("bonjour");
}

default
{
  state_entry()
  {
    sayHello();
  }

  touch_start(integer t_num)
  {
    sayHello();
  }
}

プログラムから冗長な所が無くなりスッキリとしました。そうすることで、プログラムのメンテナンスが容易になり、バグの発生を抑えることができます。


●課題
プログラム3に「イタリア語」のあいさつ「ciao」を追加してください。次に、同じ修正をプログラム4に対して行ってください。
プログラム3の場合は2箇所修正するのに対し、プログラム4では1箇所修正することを確認してください。 短いプログラムですが、メンテナンスが容易になったことが分かります。

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

  1. 2008/01/04(金) 18:30:51|
  2. LSL-Tips集
  3. | トラックバック:0
  4. | コメント:0

スクリプトTips制作(UUIDセンサー)

今年最初は、オブジェクト(アバター含む)のUUIDを表示するプログラムの紹介です。建設ウィンドウで適当なプリムを制作し、以下のLSL-Tips を組み込んでください。

(注)Tips をコピー&ペーストするだけで動きます。

1.UUIDセンサーのスクリプト
float RANGE = 5.0;      // Sensor Range (meter):Max(96m)

default
{
    touch_start(integer total_number)
    {
        llSensor("", NULL_KEY, AGENT|ACTIVE|PASSIVE, RANGE, PI);
    }

    sensor(integer total_number)
    {
        integer i;
        string s;
        for(i=0; i<total_number; i++)
        {
            s  = llDetectedName(i);
            s += "->";
            s += (string)llDetectedKey(i);
            llOwnerSay(s);
        }
    }
    
    no_sensor()
    {
        llOwnerSay("Nothing is around.");
    }
}


●UUIDセンサーの配布
スクリプト組込済みのオブジェクト(UUIDセンサー)を無料配布しています。サイズやテクスチャーなど自由に変更できます。スクリプトも見られるので、いろいろと改良を加えてみてください。
Game Forumhttp://slurl.com/secondlife/Game%20Forum/210/204/22

●UUID センサーの使い方
HUD(Head Up Display)に装着して使用してください。UUID を知りたいオブジェクトの近く(5m以内)に近づき、UUIDセンサーをタッチしてください。オブジェクトの名前とUUID が表示されます。 UUIDセンサーを地面に設置しクリックすると自分(アバター)のUUIDが分かります。
(注)アバターが「装着」しているオブジェクト(例、服・髪・等)はセンサーで検出できません。

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


2.スクリプトの解説
本講座(LSL-Tips制作講座)は、LSL超初心者講座の次ステップとしての位置づけとなっています。以下で、スクリプトの内容を説明します。

●定数
センサーの有効範囲をメートルで表します。最長96メートルです。
  float  RANGE  =  5.0;      // Sensor Range (meter):Max(96m)


●関数
http://rpgstats.com/wiki/index.php?title=Ja:functions
 
  llSensor(string name, key id, integer type, float range, float arc)
http://rpgstats.com/wiki/index.php?title=LlSensor
各パラメータの詳細は上記wiki を参照してください。

簡単に説明すると、
◇string name
検出対象の名前を指定します。空文字(””)を指定すると全てのオブジェクトが検出対象となります。
◇key id
  検出対象のUUID を指定します。NULL_KEY を指定すると全てのオブジェクトが検出対象となります。
◇integer type
  検出対象のタイプを指定します。タイプはAGENT, ACTIVE, PASSIVE, SCRIPTED の4種類です。AGENT はアバターです。ACTIVE は物理的に動いているかスクリプトが動いているオブジェクトです。PASSIVE はスクリプトがないかあっても動いていないオブジェクトもしくは物理的に動いていないオブジェクトです。SCRIPTED は動いているスクリプトを内蔵したオブジェクトです。
  各タイプは、論理OR(|)で結合させることができます。ACTIVE | PASSIVE とするとACTIVE とPASSIVE 両方を検出します。

    例:センサーからセンサー限界(96m)までのアバターを検地する
      llSensor("", NULL_KEY, AGENT, 96, PI);

    例:センサー近く(5m)のアバターとオブジェクトを検地する
      llSensor("", NULL_KEY, AGENT|ACTIVE|PASSIVE, 5, PI);

(注)SCRIPTED を指定するとAGENT を検出されなくなるようです。バグでしょうか?とりあえず、SCRIPTED は指定しない方がよさそうです。
◇float range
  検出範囲をセンサーからの距離で指定します。単位はメートルです。
◇float arc
  検出する方向を角度で指定します。単位はラジアンです。以下URLの図を参照してください。
    http://rpgstats.com/wiki/index.php?title=LlSensor

  string llDetectedName(integer number)
http://rpgstats.com/wiki/index.php?title=LlDetectedName
検出したオブジェクトの名前を返します。名前を知りたいオブジェクトの検出番号をパラメータで指定します。

    例:検出番号0番目のオブジェクトの名前
      llDetectedName(0);

(注)llDetected 系関数は、次のイベントでのみ有効に動作する。
collision, collision_start, collision_end, sensor, touch, touch_start, touch_end

  key llDetectedKey(integer number)
http://rpgstats.com/wiki/index.php?title=LlDetectedKey
検出したオブジェクトのUUID を返します。UUID を知りたいオブジェクトの検出番号をパラメータで指定します。

    例:検出番号0番目のオブジェクトのUUID
      llDetectedKey(0);


●イベント
http://rpgstats.com/wiki/index.php?title=Ja:events

touch_startイベント

    touch_start(integer total_number)
    {
        llSensor("", NULL_KEY, AGENT|ACTIVE|PASSIVE, RANGE, PI);
    }

UUID センサーをタッチすると、検出範囲:全方向(PI)、半径(RANGE)でアバター・オブジェクトを検出します。

sensorイベント
http://rpgstats.com/wiki/index.php?title=Sensor
touch_start イベント中のllSensor 関数が、何らかのオブジェクトを検出した場合、sensorイベントが動きます。

    sensor(integer total_number)
    {
        integer i;
        string s;
        for(i=0; i<total_number; i++)
        {
            s  = llDetectedName(i);
            s += "->";
            s += (string)llDetectedKey(i);
            llOwnerSay(s);
        }
    }

◇パラメータ
integer total_number  // 検出したアバター・オブジェクト数
◇ローカル変数
integer i;  // カウンター用変数
string s;  // チャット出力整形用変数
◇for文
検出したオブジェクトの数だけ繰返処理を行います。検出したオブジェクトの名前とUUID を整形してチャット出力します。

No_sensorイベント
http://rpgstats.com/wiki/index.php?title=No_sensor
touch_start イベント中のllSensor 関数が、オブジェクトを検出しない場合、no_sensorイベントが動きます。

    no_sensor()
    {
        llOwnerSay("Nothing is around.");
    }


●考察と課題
llDetected系関数には、オブジェクトの位置・回転・速度を検出する関数があります。
http://rpgstats.com/wiki/index.php?title=Detected
UUIDセンサーを改造していろいろなセンサーを制作してみて下さい。

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

  1. 2008/01/03(木) 14:21:41|
  2. 話題
  3. | トラックバック:0
  4. | コメント:0

プロフィール

Aa

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

ショップのSLURL

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

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

最近の記事

月別アーカイブ

カテゴリー

ブログ内検索

おすすめ商品!


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



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



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



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

ゲームPC

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

リンク

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

スポンサードリンク

スポンサードリンク

最近のコメント

最近のトラックバック

RSSフィード

FC2カウンター

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