こんにちはエビです^^(5月14日番組分)

みなさまも、SL不調で大変だったかとおもいます。
さて、今回はオリエンチュートリアルのSTEP3-2「写真を撮ってみよう」がリニューアルしましたので、
そこで使ったスクリプト「テクスチャー切り替え」を紹介してみました。
まずスクリプトに大切なのはオブジェクト。
このオブジェクト無しではスクリプトは動かないので、下ごしらえします。(お、初めてクッキングっぽいw)
~オブジェクトリンクの貼り方~

普通何プリムかで構成されたオブジェクトを作る際、リンクを張って一つのオブジェクトとして仕上げます。
リンクが張られたオブジェクトを編集するとき、画像のように黄色い枠と青い枠で囲まれで表示されますよね。
この黄色い枠で囲まれたプリムは親プリム(ROOT)といって、必ず1番目のプリムになります。
ちなみに、親以外のプリムは、子プリム(CHILDREN)と言います。
プリムの番号を設定するには、リンクを張る際のプリムを選択する順番によって決まります。
たとえば、3つのプリム(● ▲ ■)があって、番号を
●=1
▲=2
■=3
としたいとします。
その時は、プリムを選択する順番は
■→▲→●の順に選択して、リンクを張ります。(プリム選択は[Shift]+左クリックでできますよ。)
ちょうど、割り当てたい番号の大きいほうから選択していくと、最後が親プリムになります。
で、お題のオブジェクトではどうするか。
選択する順番は、右→左→真中の順です。
あとは、リンクを張って、下ごしらえ完了です。
~スクリプト~
==================================================
1:integer tx_max;
2:integer tx_num;
3:chg_tx()
4:{
5: string msg_tx=(string)(tx_num+1)+"枚目/全"+(string)tx_max+"枚";
6: llSetText(msg_tx,<1,1,1>,1.0);
7: llSetLinkTexture(1,llGetInventoryName(INVENTORY_TEXTURE,tx_num),ALL_SIDES);
8:}
9:default
10:{
11: state_entry()
12: {
13: llAllowInventoryDrop(FALSE);
14: tx_max=llGetInventoryNumber(INVENTORY_TEXTURE);
15: tx_num=0;
16: chg_tx();
17: }
18: touch_start(integer total_number)
19: {
20: integer sw=llDetectedLinkNumber(0);
21: if ((sw==2)||(sw==3))
22: {
23: tx_num=tx_num+(sw*2)-5;
24: if ((tx_num>=tx_max)||(tx_num<0))
25: {
26: tx_num=(tx_num*(llAbs(tx_num)-tx_max)/llAbs(tx_num));
27: }
28: chg_tx();
29: }
30: }
31: changed(integer mask)
32: {
33: if (mask & (CHANGED_INVENTORY | CHANGED_ALLOWED_DROP))
34: {
35: tx_max=llGetInventoryNumber(INVENTORY_TEXTURE);
36: llWhisper(0,"背景を追加しました。現在の保存数は"+(string)tx_max+"枚です。");
37: }
38: }
39:}
==================================================
これが今回のスクリプトです。
すみません、33行目が番組の時のに修正しています^^;
ちなみに、日本語入れてますが、このままコピってスクリプトにしても大丈夫ですよ。(行番号は消してね^^;)
スクリプトのエディタの中では□□□□□□・・・って表示になりますが、ちゃんとSLの中では表示されます^^
先ほどの番号を振ったプリムが活かされるスクリプトになっていて、
このスクリプトをオブジェクトに入れるだけで動作できるようになっています。(子プリムにスクリプト入れなくてもOKです)
どこで、その番号が活かされているかというと、
7: llSetLinkTexture(1,llGetInventoryName(INVENTORY_TEXTURE,tx_num),ALL_SIDES);
のllSetLinkTexture(1←の1、つまり親プリム。この文でテクスチャーを切り替えています。
20: integer sw=llDetectedLinkNumber(0);
のllDetectedLinkNumber(0)←この文で、触られたプリムの番号を返します。
この返された番号が変数swに代入さます。
ここで、ちょと脇にそれますw
テクスチャはno copy
の状態で、オブジェクトの中(コンテンツ)に入れてください。
オブジェクトの中に
入っているテクスチャーが表示対象になります。
この中に入れたテクスチャーが
何枚入っているかを求めるのに、14行&35行tx_max=llGetInventoryNumber(INVENTORY_TEXTURE)
のllGetInventoryNumber(INVENTORY_TEXTURE)で求めています。
あと入っているテクスチャそれぞれに自動的に番号が振られます。
5枚入ってるとしたら、テクスチャーはテクスチャー名に関係なく0~4の番号が振られます。
※番号は0から始まるので、最後が、枚数より1小さくなるので注意です。
1~2行目の
1:integer tx_max;←コンテンツ内のテクスチャーの枚数
2:integer tx_num;←表示させようとするテクスチャーの番号
として変数割り当ててます。
さて、話をもどしてw
このスクリプトの肝である、
21: if ((sw==2)||(sw==3))
22: {
23: tx_num=tx_num+(sw*2)-5;
24: if ((tx_num>=tx_max)||(tx_num<0))
25: {
26: tx_num=(tx_num*(llAbs(tx_num)-tx_max)/llAbs(tx_num));
27: }
に引き継がれます。
21行は、押されたプリムが2番か3番だった時に反応するようにして(親プリムでは反応しない)
23行めで、テクスチャーの番号(tx_num)を、右押したら-1、左押したら+1と増減させています。
24~26では、
ずっと左ばかりおすと(tx_num)が1づつ増えて、(tx_max)を超えてしまい、エラーが起きます。
逆にに右ばかりおしても(tx_num)が1づつ減って、(tx_num)がマイナスになってしまい、これもエラーが起きます。
これを回避するために、(tx_num)がマイナス、もしくは(tx_max)以上になった場合
26行目で

数的処理をして、
(tx_max)以上になったら(tx_num)を0にする。
もしくは
マイナスになったら(tx_max-1)にするとさせています。
~みんなでアルバム~

さて、堅い話はここまでにして、
このスクリプトはこのままでは、自分の持っているテクスチャーしか登録できません。
13: llAllowInventoryDrop(FALSE);
の(FALSE)を(TRUE)に変えると
みんなでこのオブジェクトの中にテクスチャーを入れることができます。
みんなで作るアルバムみたいな感じでしょうかw
入れるときは、テクスチャーをコピー可にしておきます。
そして、持ち物からテクスチャーを[ctrl]を押しながら、オブジェクトにドラッグしてください。
ちょうどカーソルがオブジェクトに重なったとき、オブジェクトが赤く囲まれます。
間違ってテクスチャー入れた場合は、直接コンテンツの中から消してくださいw
~応用編~
さて、番組では紹介できなかった、このスクリプトの応用をのせますね。
スクリプトの説明は割愛しますが。。。
一定時間でテクスチャーが切り替わる様にしてみました。
文を追加しただけです。
追加した文は太文字にしてあります。
3行目のfloat time=60.0で
切り替え間隔が変わります。
60.0秒っていう意味です。
(ちなみに必ず小数点入れてください。1秒なら1.0というふうに。)
あと、ボタン操作いらないから、時間切り替えのみでOKっという場合は、
斜文字のところを消してください。
(この場合、オブジェクトは右と左のプリムはいらず、1プリムのみでOKです。)
==================================================
integer tx_max;
integer tx_num;
float time=60.0;
chg_tx()
{
string msg_tx=(string)(tx_num+1)+"枚目/全"+(string)tx_max+"枚";
llSetText(msg_tx,<1,1,1>,1.0);
llSetLinkTexture(1,llGetInventoryName(INVENTORY_TEXTURE,tx_num),ALL_SIDES);
}
default
{
state_entry()
{
llAllowInventoryDrop(TRUE);
tx_max=llGetInventoryNumber(INVENTORY_TEXTURE);
tx_num=0;
chg_tx();
llSetTimerEvent(time);
}
touch_start(integer total_number)
{
integer sw=llDetectedLinkNumber(0);
if ((sw==2)||(sw==3))
{
tx_num=tx_num+(sw*2)-5;
if ((tx_num>=tx_max)||(tx_num<0))
{
tx_num=(tx_num*(llAbs(tx_num)-tx_max)/llAbs(tx_num));
}
chg_tx();
llSetTimerEvent(time);
}
}
changed(integer mask)
{
if(mask & CHANGED_INVENTORY)
{
tx_max=llGetInventoryNumber(INVENTORY_TEXTURE);
llWhisper(0,"背景を追加しました。現在の保存数は"+(string)tx_max+"枚です。");
}
}
timer()
{
tx_num++;
if ((tx_num>=tx_max)||(tx_num<0))
{
tx_num=(tx_num*(llAbs(tx_num)-tx_max)/llAbs(tx_num));
}
chg_tx();
}
}
===================================================
では、次回は海に行きつつジェスチャー&ポーズスクリプト編その4です。
投稿者:メルティングドッツ
この記事にコメントする
名前(ニックネーム可)とメールアドレスは必ず入力してください.
メールアドレスは管理者にのみ通知されます.
投稿に時間がかかる場合がございますが、投稿ボタンは2回押さないでください.
You: 今日はいつもと違いここ、d-laboでイベントをおこないます
You: d-laboとは、スルガ銀行の銀行窓口・資産運用やローン等の個別相談ブースの他、夢を「集め」「魅せ」「育む」をテーマに最新技術を駆使した施設で、リアルでは東京ミッドタウンにあります。
A: ふむふむ
C: ほうほう
F: ほーーーー!
J: なるほど
G: へー
You: いつもあのドームでイベントをやっていてなんかいい感じの場所がないかな、と思ってましてスルガ銀行さんにお願いして今回は特別にこちらで実施することになりました。
F: ふむふむ
B: 出張会議ね
D: 雰囲気は、いいね
![]()
【デジタルで祝う記念日】
You: さて、今日のテーマはデジタル記念日 です
A: 今日は父の日
You: セカンドライフをはじめた日はプロフィールに表示されるのはご存知かと思いますがこのデジタルな社会において、記念日をどのように祝うべきか、というのを議論したいと思います。
A: まあ、誕生日ですね、第二の
You: 父の日だったのもあり、このテーマとしました。
A: うんうん
J: なるほど
F: ふむふむ
You: ひとつは、SLで生まれた日、という以外でどのような記念日的なものがあるのか。という話。もうひとつは、その記念日のときに何をしてあげられるか、というのをお話したいと思います。
![]()
F: ナビスルだと、誕生日を登録して、だれが誕生日か出るね。SLで生まれた日以外は、普通に正月とかも祝ったね。仲間に、年賀状も送ったさ。
A: 僕はsl婚式に二回くらい出席した事があります。本格的でした。引き出物まであって^^
F: わしは4回くらいかな。
B: へえー、出たことないなあ
![]()
L: バレンタインデーにはカードを送ったよ。お返しにチョコレートをもらったので、食べたら、しんだ
C: www
A: 僕は、下痢する飴を貰いました^^;
F: いいもの貰ったねw
A: あはは^^;
![]()
【デジタル記念日リストアップ!】
You: それではまず、記念日として何があるか、いっていきましょう。
F: SL結婚式と、店のオープニングセレモニーとか
K: たんじょうび・けっこんきねんび・めいにち
You: 命日?SLであるのか?
K: お墓だってあるし
A: あと、クリスマスとバレンタインがあった
F: ホワイトデーもあったね
You: あるねー
K: あ。リンデンで、いなくなった人たちの追悼記念してなかったっけ
F: 正月、クリスマス
D: もう、SLやめるって言って、しばらく、INしなかった人いるな
A: 節分の豆まきもしました
You: あとは地震のときの募金とか
K: 個人的な記念日と社会的な記念日があるね
B: 復活した人の復活祭
F: 新潟震災のは今も続いてるさ
A: あと、リアルの誕生日を祝わされたSLで
You: 911テロの追悼とかもあるね
F: 中国のシムでは、追悼のろうそくもたてられてるし。四川の震災のね。
A: SLデビューのかと思ったら、リアルなんですって^^;
F: SLの誕生日もあれば、RLの誕生日を祝ったこともあったね。
You: お店のオープニングみたいにSL特有なものってあるかな・SLにこだわらなくてもいいけど。よくイラストサイトに○○ヒット記念で絵がプレゼントされたりするような。
K: 開店記念はRLでもある
F: 殆どがRLと連動ちゃう?
A: 一周年記念で、フリービーアイテムを配ってたり
You: 結婚記念日ってわかるんだっけ?
F: ん~、両者がSLにいればできるねw パートナーとか、そういうのがプロフィールにでるから リンデン関係のでわかるんじゃないかな
A: 僕が最初に出た挙式の本人は、妻がリアルでは人妻で・・・ってのがありました
![]()
【創立記念イベント】
B: メルティングドッツの創立記念日とかないんですか
You: うちはオリエンテーションをオープンしたのが2007年3月28日。会社の設立は2006年11月10日です。
K: なんか記念式典とかありました?
You: プレイステーション3の発売前日。
N: ぶw
B: なるほど 1111
You: 記念式典やってない。。次回はやりたいですね
G: うはw
A: うんうん
You: 11月のはまだ間に合うからやりたいね
A: やりましょー
K: リンデンの会長呼んで式典やろう
A: キッス・・・じゃなくて、記念行事^^;
B: 式典なんて堅苦しい。ゲーム大会とかしよ
F: いちいち祝辞とかが、チャットだから時間かかるw ボイチャでもいいけど、PCに負担かかるしw
You: 検討しますw
投稿者:Asaeda Meltingdots
この記事にコメントする
名前(ニックネーム可)とメールアドレスは必ず入力してください.
メールアドレスは管理者にのみ通知されます.
投稿に時間がかかる場合がございますが、投稿ボタンは2回押さないでください.
となりのバーチャルワールド」は、"セカンドライフ以外のバーチャルワールド"を紹介する番組イベントです☆
毎週木曜日 21:00 pm からセカンドライフ内の「kadokawa 2」SIMにて実施しております。
興味のある方、お時間のある方は是非、参加してみて下さい!
先週は、「@Licca」というオンラインゲームコミュニティを紹介いたしました!
先週も、インワールドでのイベントに参加してくださった皆様、どうもありがとうございました!
それでは早速、イベントの内容を簡単に紹介したいと思います☆
@Liccaとは、株式会社テラネッツ(東京都千代田区)が運営しており、株式会社タカラトミーのコンテンツである
着せ替え人形「リカちゃん」をアバターにしたオンラインコミュニティーサービスです。
登録からサービス利用まで基本無料で楽しむことができますが、アイテム購入は一部有料となっております。
![]()
こちらは、イベント当日の様子です。
画像に写っているのはMyarreさんですw
どうもありがとうございました!
![]()
![]()
こちらが@LiccaのWebサイトです。
Webブラウザベースのサービスなので、登録さえすれば簡単にスタートすることができます。
2Dアバターの着せ替えとコミュニティを楽しむサービスです。
まさに「リカちゃん人形」のデジタル版。
![]()
こちらがアバター画像です。
使用するアバターは「リカちゃん」のみで、画面左上に表示されている他、
マイルームのルーム(2D)上の好きな位置に表示させる機能があります。
画像は初期設定のアバターで、登録するとまずこのアバターからスタートします。
デフォルトの装備は、ロングストレートの髪、ロゴ入り白Tシャツ、赤ミニスカート、白ソックスの4点のみです。
このセット以外を購入し、カスタムするにはショップでアイテムを購入する必要があります。
【@(アット)について】
@Liccaでアイテムを購入する際には、@(アット)というサービス内通貨が必要となります。
1@ = 1円で、1000円~購入することができます。
決済方法は、クレジットカード・ウェブマネーを使用することができます。
![]()
画像は、Avatar Shop。
@Liccaのショップには、Avatar Shop、Room Shop、MyRoom Shop(準備中)、Lica ガチャ
の4種類のショップが用意されています。
「Lica ガチャ」は、何が出てくるかはわからない、商品がランダムに設定されている
お楽しみショップです。価格は100@のお部屋アイテム用と300@の洋服アイテムの2種類を
用意しています。
![]()
主なコミュニティ機能には、「サークル」があります。
サークルでは、同じ趣味を持つユーザー同士でのコアな会話を楽しむことができます。
また自分で好きなサークルを作ることができ、同じ趣味のユーザーや友だちと活動することができます。
検索機能があるので、気になるサークルを探しだして気軽に入会することができます。
また、参加条件やサークルでの会話の公開・非公開等各種設定も、自由に設定することができます。
その他日記やギャラリー等、他のユーザーとの交流を楽しむことができます。
![]()
マイルームには、自分部屋(2D)があり、家具や小物を置くなど自由に飾り付けることができます。
また、プロフィールの編集や日記の更新、お友だち情報や自分の部屋を訪れたユーザーなどを見ることもできます。
@Licca
http://www.at-licca.jp/
ということで、先週は「@Licca」を紹介いたしました。
上記で取り上げた以外にも楽しめる内容がいろいろとあるので、興味のある方は是非、試してみてはいかがでしょうか。
セカンドライフ内の番組イベントでは、各アバターサービスやプラットフォームを一緒に見て回るなど、
実際に操作している画面も映しながらさらに詳しく紹介をしています。
お時間・興味のある方、セカンドライフをやられたことのない方でも是非、気軽にご参加ください☆
投稿者:Takahashi Meltingdots
この記事にコメントする
名前(ニックネーム可)とメールアドレスは必ず入力してください.
メールアドレスは管理者にのみ通知されます.
投稿に時間がかかる場合がございますが、投稿ボタンは2回押さないでください.