Difference between revisions of "LlPassTouches/ja"
From Second Life Wiki
Asuka Neely (Talk | contribs) (New page: {{LSL_Function/ja |func_id=154|func_sleep=0.0|func_energy=10.0 |func=llPassTouches|p1_type=integer|p1_name=pass |p1_desc=真偽値で、TRUEの場合、タッチが子から親...) |
|||
(3 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
{{LSL_Function/ja | {{LSL_Function/ja | ||
|func_id=154|func_sleep=0.0|func_energy=10.0 | |func_id=154|func_sleep=0.0|func_energy=10.0 | ||
− | |func=llPassTouches|p1_type=integer|p1_name=pass | + | |func=llPassTouches|p1_type=integer|p1_name=pass|p1_desc=真偽値。 {{LSLG/ja|TRUE}} であれば、タッチ情報が子から親に伝達されます。 |
− | |p1_desc= | + | |func_footnote=タッチイベントに対して処理を行うスクリプトがない場合は、デフォルトで {{LSLG/ja|TRUE}} です。 |
− | |func_footnote= | + | |func_desc={{LSLG/ja|Primitive|プリム}} の項目 pass-touch を設定します。 |
− | |func_desc= | + | |
|return_text | |return_text | ||
|spec | |spec | ||
− | |caveats= | + | |caveats=ルートプリムでは ({{LSLG/ja|TRUE}} が設定されても {{LSLG/ja|FALSE}} が設定されても) 何も起こりません。タッチ情報は、'''子に touch イベントのスクリプトがなければ'''、子のスクリプトの別のイベントで {{LSLG/ja|TRUE}} が設定されていても {{LSLG/ja|FALSE}} が設定されていても、常にルートプリムに伝達されます。子プリムからのタッチ情報をブロックしたければ、'''touch イベントがついた''' スクリプトを子プリムに加えなければなりません。これはデフォルトで '''伝達しない''' となります。 |
|constants | |constants | ||
− | |examples | + | |examples=2 個のプリムからなる {{LSLG/ja|LINK_SET|リンクセット}} (オブジェクト) を作成しましょう。ルートプリムを "Parent" とし、子プリムを "Child" とします。ルートプリムにこのスクリプトを追加しましょう。 -<source lang="lsl2">integer told; |
+ | |||
+ | default | ||
+ | { | ||
+ | state_entry() | ||
+ | { | ||
+ | told = FALSE; | ||
+ | } | ||
+ | touch_start(integer total_number) | ||
+ | { | ||
+ | if(!(llDetectedLinkNumber(0) == llGetLinkNumber()))// このように条件文を使って、タッチが発生したプリムを除外します。 | ||
+ | { | ||
+ | llSay(0, "あなたが触ったって、うちの子が言ってたの。 Abuse Report を出すわよ。");// 子プリムが 2 回タッチされた場合にのみ表示されます。 | ||
+ | told = TRUE; | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | if(!told) | ||
+ | llSay(0, "どうぞお好きにお触りください。");// 知らない親はあなたを誘います。 | ||
+ | else | ||
+ | llSay(0, "やろうと思ったらあなたの手なんか切り落としてしまえるんだからね!");// これ以上触るな | ||
+ | } | ||
+ | } | ||
+ | }</source>そして、子プリムにこのスクリプトを追加します -<source lang="lsl2">integer once_is_too_often; | ||
+ | |||
+ | default | ||
+ | { | ||
+ | state_entry() | ||
+ | { | ||
+ | llPassTouches(FALSE);// 経験のない子は、最初は何を言えばいいかわかりません。 | ||
+ | once_is_too_often = FALSE; | ||
+ | } | ||
+ | touch_start(integer total_number) | ||
+ | { | ||
+ | if(llDetectedLinkNumber(0) == llGetLinkNumber())// 再び誰が触ったかチェックします。 | ||
+ | { | ||
+ | if(!once_is_too_often) | ||
+ | { | ||
+ | llSay(0, "今度触ったら言いつけるぞ。"); | ||
+ | llPassTouches(TRUE); // しかし 2 回目は、言いつけます。 | ||
+ | once_is_too_often = TRUE;// そしておとなしくなります。 | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | }</source> | ||
|helpers | |helpers | ||
|also_events= | |also_events= | ||
− | {{LSL DefineRow|| | + | {{LSL DefineRow||{{LSLG/ja|touch_start}}|}} |
− | {{LSL DefineRow|| | + | {{LSL DefineRow||{{LSLG/ja|touch}}|}} |
− | {{LSL DefineRow|| | + | {{LSL DefineRow||{{LSLG/ja|touch_end}}|}} |
|also_functions= | |also_functions= | ||
− | {{LSL DefineRow|| | + | {{LSL DefineRow||{{LSLG/ja|llPassCollisions}}|}} |
|also_tests | |also_tests | ||
|also_articles | |also_articles |
Latest revision as of 12:54, 25 February 2016
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
警告
ルートプリムでは (TRUE が設定されても FALSE が設定されても) 何も起こりません。タッチ情報は、子に touch イベントのスクリプトがなければ、子のスクリプトの別のイベントで TRUE が設定されていても FALSE が設定されていても、常にルートプリムに伝達されます。子プリムからのタッチ情報をブロックしたければ、touch イベントがついた スクリプトを子プリムに加えなければなりません。これはデフォルトで 伝達しない となります。
サンプル
2 個のプリムからなる リンクセット (オブジェクト) を作成しましょう。ルートプリムを "Parent" とし、子プリムを "Child" とします。ルートプリムにこのスクリプトを追加しましょう。 -
integer told; default { state_entry() { told = FALSE; } touch_start(integer total_number) { if(!(llDetectedLinkNumber(0) == llGetLinkNumber()))// このように条件文を使って、タッチが発生したプリムを除外します。 { llSay(0, "あなたが触ったって、うちの子が言ってたの。 Abuse Report を出すわよ。");// 子プリムが 2 回タッチされた場合にのみ表示されます。 told = TRUE; } else { if(!told) llSay(0, "どうぞお好きにお触りください。");// 知らない親はあなたを誘います。 else llSay(0, "やろうと思ったらあなたの手なんか切り落としてしまえるんだからね!");// これ以上触るな } } }
integer once_is_too_often;default {
state_entry() { llPassTouches(FALSE);// 経験のない子は、最初は何を言えばいいかわかりません。 once_is_too_often = FALSE; } touch_start(integer total_number) { if(llDetectedLinkNumber(0) == llGetLinkNumber())// 再び誰が触ったかチェックします。 { if(!once_is_too_often) { llSay(0, "今度触ったら言いつけるぞ。"); llPassTouches(TRUE); // しかし 2 回目は、言いつけます。 once_is_too_often = TRUE;// そしておとなしくなります。 } } }}
関連項目
特記事項
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。