Difference between revisions of "Control/ja"
< Control
Jump to navigation
Jump to search
(Update translation) |
|||
(2 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
{{Issues/SVC- | {{Issues/SVC-3187}}{{LSL_Event/ja | ||
|event_id=15|event_delay=0.05|event=control | |event_id=15|event_delay=0.05|event=control | ||
|p1_type=key|p1_name=id|p1_desc | |p1_type=key|p1_name=id|p1_desc | ||
|p2_type=integer|p2_name=level|p2_desc=CONTROL_* | |p2_type=integer|p2_name=level|p2_desc=CONTROL_* フラグのビットフィールド。 1 個以上のキーが押し下げられている間は、ゼロ以外になります。 | ||
|p3_type=integer|p3_name=edge|p3_desc=CONTROL_* フラグのビットフィールド。1 個以上のキーが押された/離された場合、ゼロ以外になります。 | |p3_type=integer|p3_name=edge|p3_desc=CONTROL_* フラグのビットフィールド。1 個以上のキーが押された/離された場合、ゼロ以外になります。 | ||
|event_desc={{LSLG/ja|llTakeControls}} | |event_desc={{LSLG/ja|llTakeControls}} ライブラリ関数の呼び出しとユーザの入力の結果、発生します。 | ||
|constants={{LSL Constants/Controls/ja}} | |constants={{LSL Constants/Controls/ja}} | ||
|spec | |spec | ||
|caveats | |caveats | ||
|examples=< | |examples=<source lang="lsl2">default | ||
{ | { | ||
state_entry() | state_entry() | ||
Line 30: | Line 30: | ||
CONTROL_ML_LBUTTON | | CONTROL_ML_LBUTTON | | ||
0, TRUE, TRUE); | 0, TRUE, TRUE); | ||
// | 0 は編集上の都合で、 | |||
// マスクを変更することはありません。 | |||
} | } | ||
} | } | ||
Line 40: | Line 42: | ||
llOwnerSay(llList2CSV([level, edge, start, end, held, untouched])); | llOwnerSay(llList2CSV([level, edge, start, end, held, untouched])); | ||
} | } | ||
}</ | }</source> | ||
|helpers | |helpers | ||
|also_header | |also_header | ||
Line 51: | Line 53: | ||
|also_footer | |also_footer | ||
|notes= | |notes= | ||
[[Camera/ja#Mouselook|マウスルック]] | [[Camera/ja#Mouselook|マウスルック]] でアタッチメントの {{LSLG/ja|llGetRot}} を行うと、アバターの見ている方向が返ります。 | ||
{{LSLG/ja|llMinEventDelay}} | {{LSLG/ja|llMinEventDelay}} で設定された遅延が、このイベントの遅延の少なくとも 2 倍であると、このイベントは {{LSLG/ja|llMinEventDelay}} の設定をその半分であるかのように扱います。言い換えると、 {{LSLG/ja|llMinEventDelay}} が 0.1 以上に設定された場合、このイベントは他のイベントに比べて 2 倍の頻度で発生する可能性があります。 | ||
1 つのプリムに 2 つのスクリプトを入れて llTakeControls() を呼び出したときの処理にバグがあり、意図した '''id''' が返ってこない場合があります。[http://jira.secondlife.com/browse/SVC-3187 SVC-3187] を参照してください。 | |||
|mode | |mode | ||
|issues | |issues |
Latest revision as of 08:58, 21 February 2016
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
説明
! イベント: control( key id, integer level, integer edge ){ ; }llTakeControls ライブラリ関数の呼び出しとユーザの入力の結果、発生します。
• key | id | |||
• integer | level | – | CONTROL_* フラグのビットフィールド。 1 個以上のキーが押し下げられている間は、ゼロ以外になります。 | |
• 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" |
サンプル
default
{
state_entry()
{
llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS);
}
run_time_permissions(integer perm)
{
if(PERMISSION_TAKE_CONTROLS & perm)
{
llTakeControls(
CONTROL_FWD |
CONTROL_BACK |
CONTROL_LEFT |
CONTROL_RIGHT |
CONTROL_ROT_LEFT |
CONTROL_ROT_RIGHT |
CONTROL_UP |
CONTROL_DOWN |
CONTROL_LBUTTON |
CONTROL_ML_LBUTTON |
0, TRUE, TRUE);
// | 0 は編集上の都合で、
// マスクを変更することはありません。
}
}
control(key id, integer level, integer edge)
{
integer start = level & edge;
integer end = ~level & edge;
integer held = level & ~edge;
integer untouched = ~(level | edge);
llOwnerSay(llList2CSV([level, edge, start, end, held, untouched]));
}
}
注意点
マウスルック でアタッチメントの llGetRot を行うと、アバターの見ている方向が返ります。
llMinEventDelay で設定された遅延が、このイベントの遅延の少なくとも 2 倍であると、このイベントは llMinEventDelay の設定をその半分であるかのように扱います。言い換えると、 llMinEventDelay が 0.1 以上に設定された場合、このイベントは他のイベントに比べて 2 倍の頻度で発生する可能性があります。
1 つのプリムに 2 つのスクリプトを入れて llTakeControls() を呼び出したときの処理にバグがあり、意図した id が返ってこない場合があります。SVC-3187 を参照してください。
参考情報
特記事項
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。