AgentandAvatar

llTakeControls()

キー入力の検知

llTakeControls(integer controls, integer accept, integer pass_on)
  • controls
CONTROL_FWD0x00000001前進。Wキーまたは↑キー
CONTROL_BACK0x00000002後退。Sキーまたは↓キー
CONTROL_LEFT0x00000004左移動。SHIFTキー + AキーまたはSHIFTキー + ←キー
CONTROL_RIGHT0x00000008右移動。SHIFTキー + DキーまたはSHIFTキー + →キー
CONTROL_UP0x00000010上移動。EキーまたはPgUp?キー
CONTROL_DOWN0x00000020下移動。CキーまたはPgDn?キー
CONTROL_ROT_LEFT0x00000100左回転。Aキーまたは←キー
CONTROL_ROT_RIGHT0x00000200右回転。Dキーまたは→キー
CONTROL_LBUTTON0x10000000左クリック
CONTROL_ML_LBUTTON0x40000000マウスルックでの左クリック
  • accept
  • pass_on
    FALSE FALSE機能的にキーコントロールを設定するのみ
    FALSE TRUE機能的に制御はされるが、見かけの効果はない
    TRUE FALSE機能的に制御がされ、キーコントロールイベントも発生する

llGetPermissions()?でPERMISSION_TAKE_CONTROLSの許可があるかどうかを確認する必要がある。許可がない場合、llRequestPermissions()?を用いて許可を得なければならない

control(key id, integer held, integer change) {
       integer pressed = held & change;
       integer down = held & ~change;
       integer released = ~held & change;
       integer inactive = ~held & ~change;

       if (pressed & CONTROL_LBUTTON) llOwnerSay("click");
   }

sample

default {
   state_entry() {
       //キーイベントに対するパーミッションを取得
       llRequestPermissions(llGetOwner(), PERMISSION_TAKE_CONTROLS); // get permission to take controls
   }
   
 // パーミッションが変更されたときに起動
   run_time_permissions(integer perm) { // permissions dialog answered
       if (perm & PERMISSION_TAKE_CONTROLS) { // we got a yes
           // UPキーと、Downキーの場合コントロールイベントが発生する
           // 様に設定
           llTakeControls(CONTROL_UP | CONTROL_DOWN, TRUE, FALSE); // take up and down controls
       }
   }

   //コントロールイベントの発生   
   control(key id, integer held, integer change) { // something happened to one of our controls
       //発生したイベントの分類
       if (held & CONTROL_UP) { // the "fly up" key is held
           llSetPos(llGetPos() + <0, 0, 0.25>); // move up
       } else if (change & held & CONTROL_DOWN) { // the "fly down" key was pressed
           llSetPos(llGetPos() + <0, 0, -0.25>); // move down
       }
   }
}

最新の20件

2010-03-17 2010-03-16 2010-03-15 2009-12-23 2007-11-28

今日の1件

  • llTakeControls()(1)

  • counter: 3665
  • today: 1
  • yesterday: 0
  • online: 1