みんなで作ろう。教えて!セカンドライフ!
SLmame-セカンドライフブログポータルサイトソラマメ-HOMEへ
みんなで作ろう。教えて!セカンドライフ!
トップ
フォトラバ
マップトラックバック
カレンダートラックバック
ヘルプ
新規登録
}?>
ログイン
パスワードを忘れた方はこちら
TOP
みんなで作ろう。教えて!セカンドライフ!
2007年11月21日
トースターのスクリプトと作り方、教えてください。
いろんな所においてあるあの、タッチでパンが入って、しばらくすると焦げて出てくるトースターを作りたいのですが、
スクリプトがよくわかりません。教えてください。
Posted by itapo at 20:34 │
Comments(4)
│
TrackBack(0)
│
スクリプト関連
« 前の記事へ
│
このBlogのトップへ
│
次の記事へ »
この記事へのトラックバックURL
http://oshiete.slmame.com/t73458
この記事へのコメント
私はみたことがないですが、どういうものですか?
LSL関連の日本語解説書が2冊でてますし、
以下のサイト等をみてある程度理解すれば、
よほど特殊な動作をさせていないかぎりわかると思いますよ。
http://miz.slmame.com/
http://www.aipiro.com/
http://rpgstats.com/wiki/index.php?title=Ja:Main_Page
そもそもプログラミングがって話なら、自分で作るより買ったほうが遥かに楽かと。
関数的には、
llSetTexture
llSetAlpha
llSetTimerEvent
lSetPos
あたりを使かえば、タッチして一定時間後に、パンを下から上に移動させて、できそうだけど。
あとはそれにあわせて適当に音を追加するだけじゃないかな。
むしろ日本人の初心者OKで、教えてくれそうな人が結構いるSandBox探していったほうがいいかと、これ書いてる間に思いました。
Posted by とおりすがり at 2007年11月22日 02:40
トースターですか。私も実物は見たことがないのですが、まずオブジェクトがどういった構成かわからないのですが、想像すると
・トースター本体:ボックスプリム
・つまみ部分(パンをトースターに入れる横のつまみ):形は任意
・パン:ボックスプリムを薄くしたもの
があると思われます。
テクスチャは本体部分とパンの焼ける前と後が必要でしょう。
さらに、「チン」となるサウンドが必要でしょう(チンなのかガシャなのか・・・?)
実際のスクリプトですが、プリム間通信(llMessageLinkedとlink_message)でそれぞれのプリムに処理をさせなければなりません。ということはルートプリムのスクリプト、パン・つまみのスクリプトが必要になります。
ここで疑問。
・トースターには常に焼ける前のパンが入っているのか?
・焼けたパンはどーなるのか?
たとえば、
・最初はトースターのみでタッチするとパンが入る。
・パンが入っている状態でタッチするとトーストする。
・焼いている最中はタッチしても何もしない。
・できあがったパンが入っている状態でタッチすると、パンが無くなる(最初の状態に戻る)
というような処理をしたいのであれば、ステートを分けるか、タッチ部分で状態フラグをチェックして処理を分岐するようなことをしなければなりません。また、最初にパンを透明にしておく&焼けたパンを取ったら透明にするような処理も必要になります。
さらに、タイマーが起動中はタッチしても何もしないようにする必要がありますので、同じ状態フラグを設定・参照する必要があるでしょう。
分かりやすく状態フラグを持つとすると、
状態フラグが
0の時:パンが入っていない状態
1の時:焼く前のパンが入っている状態
2の時:焼いている状態(パンは見えない。凝るなら上からのぞき込めばパンの耳が見えるし、中のヒーターがオレンジ色になっているでしょう)
3の時:焼けたパンがでている状態
となります。
フローチャート(処理の流れ)
※オーナーでないと操作できない。誰でも操作できるようにするならUUIDの取得・比較はいらない
【ルートプリム用】
<メイン部分>
1.オーナーUUIDを取得(llGetOwner)
<タッチ部分>(touch_start)
1.タッチした人のUUIDを取得(llDetectedKey)
2.タッチした人がオーナーであれば処理続行(if)
3-1.状態フラグが0ならば(if)
3-2.小プリムにリンクメッセージ1を発行(llMessageLinked)
3-3.状態フラグを1にする
4-1.状態フラグが1ならば(else if)
4-2.小プリムにリンクメッセージ2を発行(llMessageLinked)
4-3.タイマー起動(llSetTimerEvent)
4-4.状態フラグを2にする
5-1.状態フラグが3ならば(else if)
5-2.小プリムにメッセージ0を発行(llMessageLinked)
5-3.状態フラグを0にする
(状態フラグが2の時は処理をしないので記述無し)
<タイマー部分>(timer)
1.小プリムにリンクメッセージ3を発行(llMessageLinked)
2.状態フラグを3にする
3.「チン」と音を鳴らす(llPlaySound)
【小プリム用】
<メイン部分>
1.パンの場合は自身を透明にする(llSetAlpha)
2.最初の位置を取得(llGetLocalPos)
<リンクメッセージ受信部分>(link_message)
1-1.リンクメッセージ0を受信したとき(if)
1-2.自身を透明にする(パンのみ)(llSetAlpha)
1-3.焼ける前のテクスチャを設定(パンのみ)(llSetTexture)
1-4.自身を最初の位置に戻す(llSetPos)
2-1.リンクメッセージ1を受信したとき(else if)
2-2.パンの場合は自身を透明から見えるようにする(パンのみ)(llSetAlpha)
3-1.リンクメッセージ2を受信したとき(else if)
3-2.自身の位置を動かす(最初の位置-下がる分)(llSetPos)
4-1.焼けた後のテクスチャを設定(パンのみ)(llSetTexture)
4-2.自身を最初の位置に戻す(llSetPos)
※ルートプリム用、小プリム用ともREZされたら、スクリプトのリセットが必要です。
さらに、ルートプリムのタッチ部分で、それぞれの状態の時にオブジェクトの上に「パンを入れて」とか「今焼いてるよ」みたいなメッセージを表示することもできます(llSetText)。
ヒーター部分も作るのであれば小プリム用のスクリプトでリンクメッセージ2を受信したらオレンジ色にして、リンクメッセージ3を受信したら元の色にもどすとか(llSetColorまたはllSetTexture)、湯気(煙?)をパーティクル(llParticleSystem)で表現してもいいとおもいます。
Posted by sasapy at 2007年11月22日 14:56
ありがとうございます!
ためしてみたら、ちゃんとできました。
チン!のサウンドを探したんですが、なかったのでとりあえず
日テレのあのキャラクターのやつをいれてみました。
ほんとうにありがとうございました。
Posted by
itapo johin
at 2007年11月22日 18:14
itapoさん
よかったですねぇ。
どういったものが希望だったのがわからなかったので、てきとーに書いてみたのですが・・・。
Posted by
ささぴ
at 2007年11月23日 11:09
名前:
メール:
URL:
情報を記憶:
コメント:
確認せずに書込
このページの上へ▲
新規投稿
新規投稿するにはログインする必要があります。会員IDをお持ちでない方はIDを収得された後に投稿できるようになります。
カテゴリ
オブジェクト関連
(53)
スクリプト関連
(85)
アバター関連
(48)
SIM&土地関連
(27)
システム関連
(47)
ショップ関連
(7)
ビジネス関連
(3)
その他の質問
(59)
最近の記事
サポートチケットについて
(1/7)
テレポートできず困っています。
(1/7)
デフォアバに戻りたい
(1/6)
履歴・連絡先等の表示の仕方について
(12/27)
ライトのON/OFFスプリクトを教えてください><
(12/23)
画面外に出てしまったHUDの復帰方法
(12/23)
POPの撮影を
(12/22)
再度教えてくださいm(_ _)m
(12/21)
特定の位置・角度にオブジェクトをRezさせるには
(12/19)
フレンドの表示
(12/18)
過去記事
2009年01月
2008年12月
2008年11月
2008年10月
2008年09月
2008年08月
2008年07月
2008年06月
2008年05月
2008年04月
2008年03月
2008年02月
2008年01月
2007年12月
2007年11月
2007年10月
2007年09月
2007年08月
2007年07月
2007年06月
2007年05月
2007年04月
最近のコメント
まるべ / サポートチケットについて
こてっちん / デフォアバに戻りたい
千尋 / デフォアバに戻りたい
こてっちん / デフォアバに戻りたい
リサ / サポートチケットについて
最近のトラバ
チョコバーならぬチョコチン・・・
(8/30)
1.19.1に困った
(3/9)
看板で地上げ
(2/22)
看板で地上げ
(2/22)
なんで、ゲームセンター
(2/22)
<
2009年
01
月
>
S
M
T
W
T
F
S
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
ブログ内検索
RSS1.0
RSS2.0
[PR]Information
アクセスカウンタ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。 解除は→
こちら
現在の読者数 2人
オーナーへメッセージ
QRコード
LSL関連の日本語解説書が2冊でてますし、
以下のサイト等をみてある程度理解すれば、
よほど特殊な動作をさせていないかぎりわかると思いますよ。
http://miz.slmame.com/
http://www.aipiro.com/
http://rpgstats.com/wiki/index.php?title=Ja:Main_Page
そもそもプログラミングがって話なら、自分で作るより買ったほうが遥かに楽かと。
関数的には、
llSetTexture
llSetAlpha
llSetTimerEvent
lSetPos
あたりを使かえば、タッチして一定時間後に、パンを下から上に移動させて、できそうだけど。
あとはそれにあわせて適当に音を追加するだけじゃないかな。
むしろ日本人の初心者OKで、教えてくれそうな人が結構いるSandBox探していったほうがいいかと、これ書いてる間に思いました。
・トースター本体:ボックスプリム
・つまみ部分(パンをトースターに入れる横のつまみ):形は任意
・パン:ボックスプリムを薄くしたもの
があると思われます。
テクスチャは本体部分とパンの焼ける前と後が必要でしょう。
さらに、「チン」となるサウンドが必要でしょう(チンなのかガシャなのか・・・?)
実際のスクリプトですが、プリム間通信(llMessageLinkedとlink_message)でそれぞれのプリムに処理をさせなければなりません。ということはルートプリムのスクリプト、パン・つまみのスクリプトが必要になります。
ここで疑問。
・トースターには常に焼ける前のパンが入っているのか?
・焼けたパンはどーなるのか?
たとえば、
・最初はトースターのみでタッチするとパンが入る。
・パンが入っている状態でタッチするとトーストする。
・焼いている最中はタッチしても何もしない。
・できあがったパンが入っている状態でタッチすると、パンが無くなる(最初の状態に戻る)
というような処理をしたいのであれば、ステートを分けるか、タッチ部分で状態フラグをチェックして処理を分岐するようなことをしなければなりません。また、最初にパンを透明にしておく&焼けたパンを取ったら透明にするような処理も必要になります。
さらに、タイマーが起動中はタッチしても何もしないようにする必要がありますので、同じ状態フラグを設定・参照する必要があるでしょう。
分かりやすく状態フラグを持つとすると、
状態フラグが
0の時:パンが入っていない状態
1の時:焼く前のパンが入っている状態
2の時:焼いている状態(パンは見えない。凝るなら上からのぞき込めばパンの耳が見えるし、中のヒーターがオレンジ色になっているでしょう)
3の時:焼けたパンがでている状態
となります。
フローチャート(処理の流れ)
※オーナーでないと操作できない。誰でも操作できるようにするならUUIDの取得・比較はいらない
【ルートプリム用】
<メイン部分>
1.オーナーUUIDを取得(llGetOwner)
<タッチ部分>(touch_start)
1.タッチした人のUUIDを取得(llDetectedKey)
2.タッチした人がオーナーであれば処理続行(if)
3-1.状態フラグが0ならば(if)
3-2.小プリムにリンクメッセージ1を発行(llMessageLinked)
3-3.状態フラグを1にする
4-1.状態フラグが1ならば(else if)
4-2.小プリムにリンクメッセージ2を発行(llMessageLinked)
4-3.タイマー起動(llSetTimerEvent)
4-4.状態フラグを2にする
5-1.状態フラグが3ならば(else if)
5-2.小プリムにメッセージ0を発行(llMessageLinked)
5-3.状態フラグを0にする
(状態フラグが2の時は処理をしないので記述無し)
<タイマー部分>(timer)
1.小プリムにリンクメッセージ3を発行(llMessageLinked)
2.状態フラグを3にする
3.「チン」と音を鳴らす(llPlaySound)
【小プリム用】
<メイン部分>
1.パンの場合は自身を透明にする(llSetAlpha)
2.最初の位置を取得(llGetLocalPos)
<リンクメッセージ受信部分>(link_message)
1-1.リンクメッセージ0を受信したとき(if)
1-2.自身を透明にする(パンのみ)(llSetAlpha)
1-3.焼ける前のテクスチャを設定(パンのみ)(llSetTexture)
1-4.自身を最初の位置に戻す(llSetPos)
2-1.リンクメッセージ1を受信したとき(else if)
2-2.パンの場合は自身を透明から見えるようにする(パンのみ)(llSetAlpha)
3-1.リンクメッセージ2を受信したとき(else if)
3-2.自身の位置を動かす(最初の位置-下がる分)(llSetPos)
4-1.焼けた後のテクスチャを設定(パンのみ)(llSetTexture)
4-2.自身を最初の位置に戻す(llSetPos)
※ルートプリム用、小プリム用ともREZされたら、スクリプトのリセットが必要です。
さらに、ルートプリムのタッチ部分で、それぞれの状態の時にオブジェクトの上に「パンを入れて」とか「今焼いてるよ」みたいなメッセージを表示することもできます(llSetText)。
ヒーター部分も作るのであれば小プリム用のスクリプトでリンクメッセージ2を受信したらオレンジ色にして、リンクメッセージ3を受信したら元の色にもどすとか(llSetColorまたはllSetTexture)、湯気(煙?)をパーティクル(llParticleSystem)で表現してもいいとおもいます。
ためしてみたら、ちゃんとできました。
チン!のサウンドを探したんですが、なかったのでとりあえず
日テレのあのキャラクターのやつをいれてみました。
ほんとうにありがとうございました。
よかったですねぇ。
どういったものが希望だったのがわからなかったので、てきとーに書いてみたのですが・・・。