Difference between revisions of "LlPassTouches/ja"

From Second Life Wiki
Jump to navigation Jump to search
m (カテゴリ変更)
 
(2 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=真偽値で、[[TRUE/ja|TRUE]]の場合、タッチが子から親へ通過します。
|func_footnote=タッチイベントに対して処理を行うスクリプトがない場合は、デフォルトで {{LSLG/ja|TRUE}} です。
|func_footnote=通常は[[FALSE/ja|FALSE]]で、タッチイベント処理は作動しません。
|func_desc={{LSLG/ja|Primitive|プリム}} の項目 pass-touch を設定します。
|func_desc=[[prim/ja|prim]]の要素にパスタッチを設定します。
|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||[[touch_start/ja|touch_start]]|}}
{{LSL DefineRow||{{LSLG/ja|touch_start}}|}}
{{LSL DefineRow||[[touch/ja|touch]]|}}
{{LSL DefineRow||{{LSLG/ja|touch}}|}}
{{LSL DefineRow||[[touch_end/ja|touch_end]]|}}
{{LSL DefineRow||{{LSLG/ja|touch_end}}|}}
|also_functions=
|also_functions=
{{LSL DefineRow||[[llPassCollisions/ja|llPassCollisions]]|}}
{{LSL DefineRow||{{LSLG/ja|llPassCollisions}}|}}
|also_tests
|also_tests
|also_articles
|also_articles
Line 23: Line 66:
|negative_index
|negative_index
|sort=PassTouches
|sort=PassTouches
|cat1=Touch/ja
|cat1=Touch
|cat2=Prim/ja
|cat2=Prim
|cat3=Detected/ja
|cat3=Detected
|cat4
|cat4
}}
}}

Latest revision as of 13:54, 25 February 2016

要約

関数: llPassTouches( integer pass );

プリム の項目 pass-touch を設定します。

• integer pass 真偽値。 TRUE であれば、タッチ情報が子から親に伝達されます。

タッチイベントに対して処理を行うスクリプトがない場合は、デフォルトで TRUE です。

警告

ルートプリムでは (TRUE が設定されても FALSE が設定されても) 何も起こりません。タッチ情報は、子に touch イベントのスクリプトがなければ、子のスクリプトの別のイベントで TRUE が設定されていても FALSE が設定されていても、常にルートプリムに伝達されます。子プリムからのタッチ情報をブロックしたければ、touch イベントがついた スクリプトを子プリムに加えなければなりません。これはデフォルトで 伝達しない となります。

All Issues ~ Search JIRA for related Bugs

サンプル

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;// そしておとなしくなります。
            }
        }
    }
}

関連項目

イベント

•  touch_start
•  touch
•  touch_end

関数

•  llPassCollisions

特記事項

Search JIRA for related Issues

Signature

function void llPassTouches( integer pass );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。