Difference between revisions of "Control/ja"
< Control
Jump to navigation
Jump to search
Asuka Neely (talk | contribs) m |
(Update translation) |
||
Line 1: | Line 1: | ||
{{LSL_Event/ja | {{Issues/SVC-476}}{{LSL_Event/ja | ||
|event_id=15 | |event_id=15|event_delay=0.05|event=control | ||
|event_delay=0.05 | |p1_type=key|p1_name=id|p1_desc=アバターの {{LSLG/ja|UUID}} | ||
|event=control | |p2_type=integer|p2_name=level|p2_desc=CONTROL_* フラグの{{Wikipedia|1=ビットフィールド|2=ビットフィールド|lang=ja}}。1 個以上のキーが押し下げられている間は、ゼロ以外になります。 | ||
|p1_type=key | |p3_type=integer|p3_name=edge|p3_desc=CONTROL_* フラグのビットフィールド。1 個以上のキーが押された/離された場合、ゼロ以外になります。 | ||
|p1_name=id | |event_desc={{LSLG/ja|llTakeControls}} ライブラリ関数の呼び出しとユーザの入力の結果です。 | ||
|p1_desc | |||
|p2_type=integer | |||
|p2_name=level | |||
|p2_desc | |||
|p3_type=integer | |||
|p3_name=edge | |||
|p3_desc | |||
|event_desc= | |||
|constants={{LSL Constants/Controls/ja}} | |constants={{LSL Constants/Controls/ja}} | ||
|spec | |spec | ||
Line 45: | Line 37: | ||
integer end = ~level & edge; | integer end = ~level & edge; | ||
integer held = level & ~edge; | integer held = level & ~edge; | ||
integer | integer untouched = ~(level | edge); | ||
llOwnerSay(llList2CSV([level, edge, start, end, held, | llOwnerSay(llList2CSV([level, edge, start, end, held, untouched])); | ||
} | } | ||
}</lsl> | }</lsl> | ||
|helpers | |helpers | ||
|also_header | |also_header | ||
|also_events={{LSL DefineRow|| | |also_events={{LSL DefineRow||{{LSLG/ja|run_time_permissions}}}} | ||
|also_functions={{LSL DefineRow|| | |also_functions={{LSL DefineRow||{{LSLG/ja|llTakeControls}}}} | ||
{{LSL DefineRow|| | {{LSL DefineRow||{{LSLG/ja|llReleaseControls}}}} | ||
{{LSL DefineRow|| | {{LSL DefineRow||{{LSLG/ja|llRequestPermissions}}}} | ||
|also_tests | |also_tests | ||
|also_articles | |also_articles | ||
|also_footer | |also_footer | ||
|notes= | |notes= | ||
[[Camera/ja#Mouselook|マウスルック]]時のアタッチメントでの {{LSLG/ja|llGetRot}} は、アバターの見ている視角から返ります。 | |||
{{LSLG/ja|llMinEventDelay}} がこのイベントの遅延の少なくとも二倍に設定された場合、このイベントは {{LSLG/ja|llMinEventDelay}} の設定をその半分であるかのように扱います。言い換えると、{{LSLG/ja|llMinEventDelay}} が 0.1 以上に設定された場合、このイベントは他のイベントに比べて 2 倍の頻度で発生し得ます。 | |||
私が試したところ、アバターのコントロールが取得されたときに返される UUID は、その当該アバターでなく、所有者の UUID でした。複数のアバターのパーミションを同時に扱うために一つのオブジェクトで複数のスクリプトを動かした場合、control イベントは全てのスクリプトで発生しますが、それがどのアバターに起因するかを知る手立てはありません。これは [[#SVC-476|SVC-476]] として挙げられています。(訳注: 所有者の UUID が渡されるという問題は 2009-04-07 の Server 1.26 で修正されたようです。ただし単一プリム内の複数スクリプト P, Q でそれぞれ複数アバター A, B のパーミションを管理する場合にまだ問題があります。A がキー操作を行なうと、P, Q 双方で control イベントが発生し、P には A の、同時に Q には B の UUID が渡されます。B のキー操作が無いにもかかわらずです。) | |||
|mode | |mode | ||
|issues | |||
|cat1=Controls | |cat1=Controls | ||
|cat2 | |cat2 |
Revision as of 05:04, 11 June 2009
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
説明
! イベント: control( key id, integer level, integer edge ){ ; }llTakeControls ライブラリ関数の呼び出しとユーザの入力の結果です。
• key | id | – | アバターの UUID | |
• integer | level | – | CONTROL_* フラグの![]() |
|
• integer | edge | – | CONTROL_* フラグのビットフィールド。1 個以上のキーが押された/離された場合、ゼロ以外になります。 |
定数 | 値 | 説明 |
---|---|---|
CONTROL_FWD | 0x00000001 | 前進 (↑ か W) |
CONTROL_BACK | 0x00000002 | 後進 (↓ か S) |
CONTROL_LEFT | 0x00000004 | 左移動 (⇧ Shift-← か ⇧ Shift-A [マウスルックならば ← か A]) |
CONTROL_RIGHT | 0x00000008 | 右移動 (⇧ Shift-→ か ⇧ Shift-D [マウスルックならば → か D]) |
CONTROL_ROT_LEFT | 0x00000100 | 左回転 (← か A) |
CONTROL_ROT_RIGHT | 0x00000200 | 右回転 (→ か D) |
CONTROL_UP | 0x00000010 | 上昇 (PgUp か E) |
CONTROL_DOWN | 0x00000020 | 下降 (PgDn か C) |
CONTROL_LBUTTON | 0x10000000 | マウス左クリック |
CONTROL_ML_LBUTTON | 0x40000000 | マウスルック中のマウス左クリック |
(undocumented) | 0x02000000 | Avatar left rotation detected. Triggers llGetAnimation == "Turning Left" |
(undocumented) | 0x04000000 | Avatar right rotation detected. Triggers llGetAnimation == "Turning Right" |
サンプル
<lsl>default {
state_entry() { llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS); } run_time_permissions(integer perm) { if(PERMISSION_TAKE_CONTROLS & perm) { llTakeControls( CONTROL_FWD
注意点
マウスルック時のアタッチメントでの llGetRot は、アバターの見ている視角から返ります。
llMinEventDelay がこのイベントの遅延の少なくとも二倍に設定された場合、このイベントは llMinEventDelay の設定をその半分であるかのように扱います。言い換えると、llMinEventDelay が 0.1 以上に設定された場合、このイベントは他のイベントに比べて 2 倍の頻度で発生し得ます。
私が試したところ、アバターのコントロールが取得されたときに返される UUID は、その当該アバターでなく、所有者の UUID でした。複数のアバターのパーミションを同時に扱うために一つのオブジェクトで複数のスクリプトを動かした場合、control イベントは全てのスクリプトで発生しますが、それがどのアバターに起因するかを知る手立てはありません。これは SVC-476 として挙げられています。(訳注: 所有者の UUID が渡されるという問題は 2009-04-07 の Server 1.26 で修正されたようです。ただし単一プリム内の複数スクリプト P, Q でそれぞれ複数アバター A, B のパーミションを管理する場合にまだ問題があります。A がキー操作を行なうと、P, Q 双方で control イベントが発生し、P には A の、同時に Q には B の UUID が渡されます。B のキー操作が無いにもかかわらずです。)
参考情報
特記事項
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。