ソラマメブログ

  
Posted by at

2007年05月08日

衝突判定(スクリプト初級第二十三回)

初級スクリプトとして触れておきたい事項も最後となりました。
最後に扱うのはオブジェクトの衝突についてです。

物理オブジェクトを扱いだすと、いろいろな場面で衝突判定をしたりするのですが、通常のオブジェクトにおける衝突判定も実は結構有用です。
例えば以前、センサーを利用した自動ドアを作りました。
あのスクリプトは衝突を用いて書き直すことが可能です。

衝突・・・なんていうと猛スピードで激突するイメージかもしれませんが、lslで言う衝突はもっと軽いものも含みます。
例えばアバターが歩いてきてオブジェクトを踏んだとき、それだけで衝突のイベントが起きるのです。
自動ドアの前にマットを用意しておいて、それを踏んだらドアが開く、という古典的な仕掛けが実現できます。

実際に衝突を使った自動ドアを作ってみましょう。
  続きを読む

Posted by Miz at 12:15Comments(32)初級スクリプト

2007年05月07日

カメラ制御(スクリプト初級第二十二回)

最後に衝突について説明して初級スクリプト講座を終えようと思っていたのですが、最近、カメラのコントロールが意外に面白い効果を出せることに気づいたので、今回はカメラの制御について書きたいと思います。
SLで言うところのカメラとは、「視点」のことです。

通常、SLの視点はユーザーが自由に動かすことができます。
ALTを押しながらアバターを左クリックすると、そのアバターに注目したりもできますね。
結構自由なカメラコントロールが許されていて、私のように趣味でムービーを作る者にとっては重宝しています。

スクリプトからカメラをコントロールする方法も用意されており、これがまたムービー作成には非常に便利です。
どういうことかと言うと、撮影用の椅子を用意しておき、そこに座ると必ず特定の位置に視点が定まるようにできるのです。
例えば建物の建設の様子などを定期的に定点撮影したい、などという場合にも使えます。
  続きを読む

Posted by Miz at 14:36Comments(4)初級スクリプト

2007年05月02日

デモ商品を作ろう(スクリプト初級第二十一回)

今回はデモ用の商品を作る方法について書こうと思います。
デモ用とは、例えば一定期間のみ使用可能なもの、特定回数使ったら使えなくなるようなサンプル商品です。
当然ながら、スクリプトを使って制御をしますので、スクリプトが組み込めない商品(スキン・服・テクスチャ・アニメーションなど)に関してはここで解説する方法は使えません。

スクリプトが組み込める商品であれば、どんなものにも応用は利きますが、今回は特にアタッチメントについて見ていきます。
というのも、アタッチを制御するスクリプトについて今まで説明していないからです(^^;

デモ用商品のスクリプトを通して、スクリプトによるアタッチの制御についてぜひ覚えて下さい。  続きを読む

Posted by Miz at 12:15Comments(20)初級スクリプト

2007年05月01日

センサーを使おう(スクリプト初級第二十回)

今回はセンサーについて見てみましょう。
センサーというのは、スクリプトによって近くのアバターやオブジェクトを検知する仕組みのことを言います。
最も単純な使い方としては、自動ドアなどが考えられます。

また、翻訳機などでは近くにいる人をダイアログに出力し、誰の言葉を翻訳するか指定できるようにしているものもあります。
このとき近くにいる人を特定するのにセンサーが使われています。  続きを読む

Posted by Miz at 12:15Comments(21)初級スクリプト

2007年04月27日

ステートのこと(スクリプト初級第十九回)

今回はスクリプトの構成について少し突っ込んだ話をします。
具体的に実用性のあるスクリプトは出てきませんが、自分で1からスクリプトを書こうというとき、構成をどうするか考える際の参考にしていただければと思います。

このblogの記事では、最初の頃にスクリプトの構成について触れました。
「ステート」「イベント」「処理」の3つの要素で成り立っているという話です。

私はこの3つがスクリプトの基本要素であると説明し、スクリプトを書く際には作ろうとしている機能がどんな「ステート」「イベント」「処理」になるのか意識すると良いと書いてきましたが、実際には「ステート」がどんな時に登場するのか、いまひとつハッキリしないという方もいらっしゃるのではないでしょうか。
というのも、今まで挙げてきたスクリプトの例の中には、defaultステートしか存在しないようなものが多々あるからです。

ステートって、どんなときに使うのでしょうか?  続きを読む

Posted by Miz at 12:15Comments(2)初級スクリプト

2007年04月26日

rez!(スクリプト初級第十八回)

初級者向けに説明すべきことはもはやほとんど残っていません(^^;
もちろん、lslに関してはまだまだ膨大な機能があり、触れていない部分は多いのですが、あくまでも「初級」ということであれば、残っているのは今回扱うrezを含めて2、3の項目くらいかと思います。

ちなみに今まで一切触れてこなかった機能として、物理系のスクリプトがあります。
物理系のスクリプトとは、SL内の物理的なオブジェクトを扱うための関数群のことです。
例えば加速させたり、重力を無くしたり、コマのように回転する力を加えたりできるのですが、これらの関数についてはスクリプトの知識というよりはSL内物理学の知識が必要になってきますので、初級者向けの対象外としました。
ちなみに、乗り物(ビークル)を作成する際には物理系スクリプトが必須です。
そのうち「乗り物を作ろう」の回があるかもと期待してた方、ごめんなさい(^^;
初級者さん向けとしてはちょっと難しいかもしれません。

また、HTTPを使った外部Webサービスとのやり取りに関しても言及していません。
lslの範疇を越え、Webサービスの構築についても説明しないとわかりにくいでしょうし、そうなると初級者の方には無用な混乱を引き起こしかねないからです。

残っているlslの機能の中で、説明しておくべきかもしれないと思っているのは、rez、衝突判定、サーチ、アタッチの4つです。
今回はその中のrezについて説明したいと思います。
  続きを読む

Posted by Miz at 12:15Comments(28)初級スクリプト

2007年04月25日

音を鳴らそう(スクリプト初級第十七回)

今回のスクリプトは簡単です。
サウンドの再生についてはもっと早くに取り上げるべきでしたが、ついつい後回しになってしまいました(^^;

オブジェクトにちょっとした音を組み込むことは、簡単なわりに効果的です。
例えば照明のON/OFFをするときにスイッチ音を付けたり、アニメーションと一緒に効果音を付けたりするだけで、よりリアルで面白いものを実現することができます。
基本的にはスクリプトで実現できる音とは、効果音のことだと思ってください。
BGMのような長いサウンドを鳴らすことは容易ではありません。
というのも、SLにアップロード可能なサウンドは10秒以内に限られているためです。

今回は簡単な例として、以前作ったドアのスクリプトに、開閉の音を組み込んでみたいと思います。  続きを読む

Posted by Miz at 13:35Comments(23)初級スクリプト

2007年04月24日

HUDを作ろう(スクリプト初級第十六回)

prim間通信をもう少し練習するという意味で、今回はHUDを作ってみましょう。
HUDというのはヘッドアップディスプレイ (Head-Up Display)のことで、SLでは画面上に表示されるインターフェースのことを言います。
ミニマップなども広義の意味ではHUDになるのでしょうが、SLでは特にユーザーが独自に作ったインターフェースのことを指します。
日本人にとって馴染みのあるものは翻訳機などでしょうか。
チャットの自動英語翻訳を行ってくれるJ2Eは画面左中央に表示される半円型のHUDですね。

何のHUDを作ってもいいのですが、あんまり出回ってなくて、それでいて便利そうなものが良いですね・・・。
テレポート用HUDなどはどうでしょうか。
HUDのボタンにテレポート先を登録しておいて、ボタンを押すとマップが開き、すぐにテレポートができるようなHUDです。  続きを読む

Posted by Miz at 12:15Comments(44)初級スクリプト

2007年04月23日

prim間通信(スクリプト初級第十五回)

しばしばカツラなどに組み込まれている色変更のスクリプトを作ってみましょう。
単純に色を変えるだけのスクリプトであれば、ここまで読んできた方には簡単に出来ると思います。
ですが、今回は特にprim間の通信を行う方法使って、拡張性の高いスクリプトを考えてみたいと思います。

prim間通信とは、llMessageLinked()という関数を使い、リンクされているprim同士でメッセージをやり取りする方法です。
これを使うと、一つのprimを操作したときに、別のprimを操作することができるようになります。  続きを読む

Posted by Miz at 12:15Comments(16)初級スクリプト

2007年04月20日

ポーズボール(スクリプト初級第十四回)

引き続いてアニメーションのスクリプトです。
前回は単にタッチするとアニメーションするだけのスクリプトでしたが、これではいまひとつ実用性がありません。
アニメーションが最もよく利用されているのはポーズボールでしょう。

SLで遊んだ人なら誰もが一度は見たことがあると思います。
しばしば木陰とかベッドの上に置いてある、赤と青のボール。
あれですw
クラブのフロアや、バーのストゥールなんかにも置いてあるところがあります。

これらのボールは、アバターが座ったときに特定のアニメーションを実行するものです。  続きを読む

Posted by Miz at 16:24Comments(25)初級スクリプト

2007年04月19日

アニメさせよう(スクリプト初級第十三回)

十三回もやってんのかって感じのスクリプト講座です(^^;
振り返ってみてみると、脱初級者までの道のりは、もうそれほど遠くはありませんね。
「ステート」「イベント」「処理」の三段構成を押さえ、最も多様性のあるイベントlistenも扱ったし、便利なダイアログも出てきたし。
パーミッションが少々モヤモヤ感がありますが、今回のアニメーションスクリプトでもパーミッションと格闘することになりますので、より理解が進むかと思います。

というわけで、今回は特にパーミッションに焦点をあてながら、アニメーションを扱うスクリプトについて見ていくことにしましょう。  続きを読む

Posted by Miz at 12:15Comments(20)初級スクリプト

2007年04月18日

ノートを使おう(初級スクリプト第十二回)

ベンダースクリプトの改良編です。
前回までで機能面は十分に満たすものを作りましたが、今回は使い勝手のよいものになるよう改造を施します。

改良点は商品データの管理の部分です。
前回までのスクリプトでは、商品データをリスト型変数に定義していましたが、この方法だと商品の追加や変更があったときにいちいちスクリプトを直さなければなりません。
そこで、商品データはSLのノートカードを使って管理するようにし、ノートカードを切り替えるだけで扱う商品を変えられるようなベンダーを考えます。

商品のデータに対して、そのデータを使ってアレコレ操作する仕組みを「ロジック」と言います。
ノートカードを使う方法は、言わば「データ」と「ロジック」を切り離して管理する手法になります。
これはシステム工学的に言っても基本的なところですね。  続きを読む

Posted by Miz at 12:15Comments(12)初級スクリプト

2007年04月17日

お金を扱う(初級スクリプト第十一回)

ベンダー作成の続きです。
簡単なようでいて、意外に面倒なのがベンダーです(^^;
やはりお金を扱うスクリプトですから、間違いのないような仕組みにしておかなければいけません・・・。

前回はタッチして商品の画像を切り替えるスクリプトを作りました。
今回はお金を受け取って商品を渡す部分に取り組みます。
そこまで出来ればベンダーとしては最低限のものにはなるでしょう。

  続きを読む

Posted by Miz at 12:15Comments(16)初級スクリプト

2007年04月16日

ベンダーを作ろう(初級スクリプト第十回)

SLでアイテムを販売するには、必ずしもスクリプトが必要になるわけではありません。
販売用のオブジェクト(ポスター、看板、箱など)を用意し、そのオブジェクトのコンテンツの中に売りたいアイテムを詰め、値段とコンテンツを販売する設定にすれば、ひとまず売ることは可能になります。
ですが、この方法はアイテム一つ(あるいは1セット)につき一つのオブジェクトが必要となり、商品が増えるに従ってprim数が増加していくという問題点があります。
また、販売用オブジェクトを並べるにはどうしてもスペースが必要になりますので、限られた店舗スペースでは、自ずと販売できるアイテムの数が限られてしまいます。

スクリプトを使ったベンダーは、そのような問題点を解決するために使われます。
よく見かけるものは、矢印ボタンを押すと商品の画像が切り替わり、欲しいものを見つけたらL$を支払い、アイテムが手に入るという仕組みのものです。
このようなベンダーでは、商品が増えたときにオブジェクトを増やさなくて済みます。

念のために言っておきますが、スクリプトによるベンダーのほうが優れているというわけではありません。
いちいち矢印をクリックして商品を探すのは、お客さんからすると面倒な作業です。
順番に見て行っても、欲しいアイテムが見つかるかどうかも確実ではないですし、途中で面倒になって見るのをやめてしまうことも考えられます。
どんな商品があるのか一目瞭然にするには、別途工夫が必要になるでしょう。

とは言うものの、この記事はスクリプトの勉強ですので、商売のやり方について書くのは少々的外れですね(^^;
とにかくベンダースクリプトを作ってみて、使えるか使えないかは別問題としておきましょう。  続きを読む

Posted by Miz at 12:15Comments(6)初級スクリプト

2007年04月13日

看板を作ろう(初級スクリプト第九回)

第六回~第八回は初級スクリプトの最初の山場でした。
へヴィな内容が続きましたので、今回はちょっと息抜き的に、しかしながら実用的なスクリプトを作ってみたいと思います。

SLで店をやるという人は多いでしょう。
そして商品の販売用や、宣伝のために、看板を作りたいという人もいるかと思います。
綺麗なテクスチャさえ用意すれば、それなりの看板を作ることができますが、この記事は一応スクリプトの勉強ですのでw、スクリプトを使った動きのある看板に挑戦してみましょう。

照明スクリプトをクリアした人にとっては、何ら難しいところは無いスクリプトばかりです。
ちょっとしたスクリプトだけで、いろいろな看板が作れます。
小粒なスクリプトをいくつか書いてみようと思います。  続きを読む

Posted by Miz at 12:15Comments(9)初級スクリプト

2007年04月12日

ダイアログを使おう(初級スクリプト第八回)

照明スクリプトだけで三回にも及んでしまいました(^^;
ですが、照明スクリプト一回目の「ユーザー関数」、二回目の「listen」、そして今回の「ダイアログ」はlslの中でも使用頻度の高いものばかりですので、ぜひとも使い方をマスターしていただきたい部分です。
この回から初めて見たという方は、第六回の「照明を作ろう」から戻ってお読みいただくのが良いかと思います。
照明のスクリプト作成について順を追って解説しております。

さすがに照明スクリプトがこれだけ続くと、いいかげん目がチカチカして来そうですw
今回は頑張って完成まで行き着きたいと思います。  続きを読む

Posted by Miz at 12:15Comments(5)初級スクリプト

2007年04月11日

聞き耳を立てる(初級スクリプト第七回)

照明スクリプトの続きです。
前回作ったスクリプトの改良になりますので、実習する際には前回分からやってみて下さい。

前回の問題点

前回はタッチするたびに赤、緑、青、消灯と変化する照明を作りましたが、この照明は好きな色にする際に何度もタッチしなければならないという問題点があります。
いきなり青い光をつけたいとか、赤い光で点けていたが消灯したいというようなとき、数回クリックするのは面倒です。
ラグが発生しているときなどには、誤って二度、三度とタッチしてしまい、一気に色が変わってしまうようなこともあります。



何度もタッチすることなく好みの色にしたり、消灯するようにしたいところです。
例えば、タッチのたびに色を変えるのではなく、タッチしたあと、チャットで色を指定するとその色に変わるような仕組みはどうでしょうか。
"red"と言えば赤く光り、"blue"と言えば青、"off"で消えるような照明です。  続きを読む

Posted by Miz at 12:15Comments(39)初級スクリプト

2007年04月10日

照明を作ろう(初級スクリプト第六回)

椅子、ドアと作ってきたことで、だいぶスクリプトの構成については理解できてきたと思います。
今回はさらに練習として、照明を作ってみましょう。
ただの照明では面白くありませんので、カラフルに色が変わるものにしたいと思います。

例によってbuildから

お好みで照明器具を作りましょう。
ランプ型、蛍光灯型、電球型、なんでも構いません。

私はこんなのを作りました。



手抜きなスタンドライトですw  続きを読む

Posted by Miz at 09:30Comments(4)初級スクリプト

2007年04月09日

ドアを作ろう(初級スクリプト第五回)

まずはbuild

基本的なものにも関わらず、スクリプト初心者にとっては少々難しいのがドアのスクリプトです。
真横にスライドするドアならばまだ楽ですが、回転の要素が入ってくると途端に難しいと思う人が多いようですね。
前回の椅子を作る際に、回転角度の指定方法について便利な書き方を説明しましたので、今回はそれを使ってドアのスクリプトにチャレンジしてみようと思います。

例によってまずはbuildからです。
ドアの作り方にもいろいろありますが、注意していただきたいことは一点のみです。
スクリプトによる回転は、あくまでもオブジェクトの中心座標(ルート座標)を基準に行われますので、ルートの座標をドアの蝶番の位置にあうようにしなければなりません。

私は単純に、立方体を板状にした1primのドアを用意しました。



回転の軸をドアの端っこにするために、パスカットを使って板を半分にしています。
よくわからない方は、ひとまずパスカットの値を、0.375-0.875に設定してみて下さい。
立方体が半分になって、結果中心座標が端っこになります。

回転軸を端っこにする手法としては、棒状にした円柱をドアの端に配置し、それをルートプリムにする方法もあります。
それだとprim数が増えてしまうのであまりお勧めはしませんが、特殊な形状のドアを作る際にはそうすると良いでしょう(ホビットの家の丸ドア等)。  続きを読む

Posted by Miz at 12:11Comments(54)初級スクリプト

2007年04月06日

椅子を作ろう(初級スクリプト第四回)

まずはbuild

今回は椅子を作ってみましょう。
第一回でも触れましたが、buildで椅子を作っただけでは、正しく座ることができません。
椅子はやっぱり座れたほうが心休まりますので、座れる椅子を作ることにします。

スクリプトで椅子を作り出すことも不可能ではありませんが、いきなりでは難しいので、buildツールを使って椅子の形を作ってください。
椅子の形についてはどんなものでもかまいません。
ソファであろうが、スツールであろうが、buildの練習のために好みの形の椅子を自作してみるのが良いかもしれません。
「スクリプトだけ勉強したいんだ!」
という方は、とりあえず円柱なり立方体なりで間に合わせてもOKです。
もちろん、以前に椅子を作ったことがあって、
「ちゃんと座れるようにしたいのになぁ・・・」
という方は、ぜひその椅子に今回のスクリプトを組み込んでみてください。



私はこんなのを作ってみました。  続きを読む
タグ :sit

Posted by Miz at 23:38Comments(21)初級スクリプト