Difference between revisions of "LlRotTarget/ja"

From Second Life Wiki
Jump to navigation Jump to search
m (カテゴリ変更)
 
(5 intermediate revisions by one other user not shown)
Line 3: Line 3:
|func=llRotTarget
|func=llRotTarget
|return_type=integer
|return_type=integer
|p1_type=rotation|p1_name=rot|p1_desc=対象の回転target rotation
|p1_type=rotation|p1_name=rot|p1_desc=目標とする回転
|p2_type=float|p2_name=error|p2_desc='''rot'''が到着したときのラジアンの角度定義
|p2_type=float|p2_name=error|p2_desc='''rot''' に到達したか決める角度誤差をラジアンで
|func_footnote=よく似た関数が位置づけで存在します。{{LSLG/ja|llTarget}}<br/>この関数はオブジェクトを回転しないので、{{LSLG/ja|llSetRot}}、{{LSLG/ja|llRotLookAt}}{{LSLG/ja|llLookAt}}をつかいます。
|func_footnote=同じような関数が位置についてもあります: {{LSLG/ja|llTarget}}<br/>この関数はオブジェクトを回転させません。回転させるには、{{LSLG/ja|llSetRot}} 、{{LSLG/ja|llRotLookAt}} {{LSLG/ja|llLookAt}} を使用してください。
|func_desc=この関数は、スクリプトが回転が到着したときを知ることを試みます。'''rot''''''error'''を登録すると{{LSLG/ja|at_rot_target}}が作動し、{{LSLG/ja|not_at_rot_target}}イベントが登録が解除されるまで作動し続けます。<br/>
|func_desc=この関数で、ある回転に到達したときに、スクリプトにそれを知らせることができます。<br/>'''rot''' '''error''' と一緒に登録し、登録解除されるまで {{LSLG/ja|at_rot_target}} {{LSLG/ja|not_at_rot_target}} を継続的に発生させます。
|return_text={{LSLG/ja|llRotTargetRemove}}で対象を登録解除する処理
|return_text={{LSLG/ja|llRotTargetRemove}} を使って目標を登録解除するためのハンドラ
|spec
|spec
|caveats
|caveats
|constants
|constants
|examples=
|examples=
<lsl>
<source lang="lsl2">
vector standrot = <0.0, 0.0, 0.0>;
vector standrot = <0.0, 0.0, 0.0>;
vector fliprot = <45.0, 0.0, 0.0>;
vector fliprot = <45.0, 0.0, 0.0>;


// simple two-state rot target detection and rotation by Hypatia Callisto
// Hypatia Callisto 作の、簡単な 2 個のステートからなる回転検知と回転
// works, to detect a rotation target. An example I wrote
// 作動すると、目標回転を検知します。
// since there is almost zilch for clean examples for
// at_rot_target, not_at_rot_target, llRotTarget, llRotTargetRemove
// at_rot_target, not_at_rot_target, llRotTarget, llRotTargetRemove
// の純粋なサンプルがほとんどなかったので、サンプルを書きました。


integer rottarget;
integer rottarget;
Line 28: Line 28:
     state_entry(){  
     state_entry(){  
         rottarget = llRotTarget(llEuler2Rot(fliprot*DEG_TO_RAD), 0.1);
         rottarget = llRotTarget(llEuler2Rot(fliprot*DEG_TO_RAD), 0.1);
         llSetPrimitiveParams ([PRIM_ROTATION, llEuler2Rot(standrot*DEG_TO_RAD)]); // rotate to standrot
         llSetPrimitiveParams ([PRIM_ROTATION, llEuler2Rot(standrot*DEG_TO_RAD)]); // 最初の回転位置まで回転する
    }
 
    not_at_rot_target()
        {
        llRotTargetRemove( rottarget );
        llOwnerSay("not there");
        }
       
    touch_start (integer total_number){
        state rotatestate; // change to state for new position
    }
}
           
     
state rotatestate
{
    state_entry(){
        rottarget = llRotTarget(llEuler2Rot(fliprot*DEG_TO_RAD), 0.1);
        llSetPrimitiveParams ([PRIM_ROTATION, llEuler2Rot(fliprot*DEG_TO_RAD)]); // rotate to new point
    }
   
    at_rot_target(integer tnum, rotation targetrot, rotation ourrot){
        llRotTargetRemove( rottarget );
        llOwnerSay("there"); //reached the target
    }
 
    touch_start(integer touched){
        state default;
    }
   
}
 
</lsl>
<lsl>
vector standrot = <0.0, 0.0, 0.0>;
vector fliprot = <45.0, 0.0, 0.0>;
 
// simple two-state rot target detection and rotation by Hypatia Callisto
// works, to detect a rotation target. An example I wrote
// since there is almost zilch for clean examples for
// at_rot_target, not_at_rot_target, llRotTarget, llRotTargetRemove
 
integer rottarget;
 
default
{
 
    state_entry(){
        rottarget = llRotTarget(llEuler2Rot(fliprot*DEG_TO_RAD), 0.1);
        llSetPrimitiveParams ([PRIM_ROTATION, llEuler2Rot(standrot*DEG_TO_RAD)]); // rotate to starting point
     }
     }


Line 84: Line 34:
     {  
     {  
         llRotTargetRemove( rottarget );
         llRotTargetRemove( rottarget );
         llOwnerSay("not there"); //not at target
         llOwnerSay("not there"); //目標ではない
     }
     }
          
          
     touch_start (integer total_number)
     touch_start (integer total_number)
     {
     {
         state rotatestate; // change to state for new position
         state rotatestate; // ステートを切り替えて、新しい位置に
     }
     }
}
}
Line 98: Line 48:
     state_entry(){  
     state_entry(){  
         rottarget = llRotTarget(llEuler2Rot(fliprot*DEG_TO_RAD), 0.1);
         rottarget = llRotTarget(llEuler2Rot(fliprot*DEG_TO_RAD), 0.1);
         llSetPrimitiveParams ([PRIM_ROTATION, llEuler2Rot(fliprot*DEG_TO_RAD)]); // rotate to new point
         llSetPrimitiveParams ([PRIM_ROTATION, llEuler2Rot(fliprot*DEG_TO_RAD)]); // 新しい回転位置まで回転する
     }
     }
      
      
Line 104: Line 54:
     {  
     {  
         llRotTargetRemove( rottarget );
         llRotTargetRemove( rottarget );
         llOwnerSay("there"); //reached the target
         llOwnerSay("there"); //目標に到達
     }
     }


Line 112: Line 62:
      
      
}
}
</lsl>
</source>
|helpers
|helpers
|also_tests
|also_tests
|also_events=
|also_events=
{{LSL DefineRow|[[at_rot_target/ja|at_rot_target]]|[[not_at_rot_target/ja|not_at_rot_target]]|回転対象のイベント}}
{{LSL DefineRow|{{LSLG/ja|at_rot_target}}|{{LSLG/ja|not_at_rot_target}}|回転目標に達したときのイベント}}
{{LSL DefineRow|[[at_target/ja|at_target]]|[[not_at_target/ja|not_at_target]]|位置対象のイベント}}
{{LSL DefineRow|{{LSLG/ja|at_target}}|{{LSLG/ja|not_at_target}}|位置目標に達したときのイベント}}
|also_functions=
|also_functions=
{{LSL DefineRow||[[llRotTargetRemove/ja|llRotTargetRemove]]|対象の回転を停止します}}
{{LSL DefineRow||{{LSLG/ja|llRotTargetRemove}}|回転目標を登録解除します}}
{{LSL DefineRow||[[llTarget/ja|llTarget]]|対象の位置を設定します}}
{{LSL DefineRow||{{LSLG/ja|llTarget}}|位置目標を登録します}}
{{LSL DefineRow||[[llTargetRemove/ja|llTargetRemove]]|対象の位置を停止します}}
{{LSL DefineRow||{{LSLG/ja|llTargetRemove}}|位置目標を登録解除します}}
|also_articles
|also_articles
|notes
|notes
|cat1=Physics/ja
|cat1=Physics
|cat2=Target/ja
|cat2=Target
|cat3
|cat3
|cat4
|cat4
}}
}}

Latest revision as of 13:43, 25 February 2016

要約

関数: integer llRotTarget( rotation rot, float error );

この関数で、ある回転に到達したときに、スクリプトにそれを知らせることができます。
roterror と一緒に登録し、登録解除されるまで at_rot_targetnot_at_rot_target を継続的に発生させます。
llRotTargetRemove を使って目標を登録解除するためのハンドラを integer で返します。

• rotation rot 目標とする回転
• float error rot に到達したか決める角度誤差をラジアンで

同じような関数が位置についてもあります: llTarget
この関数はオブジェクトを回転させません。回転させるには、llSetRotllRotLookAtllLookAt を使用してください。

サンプル

vector standrot = <0.0, 0.0, 0.0>;
vector fliprot = <45.0, 0.0, 0.0>;

// Hypatia Callisto 作の、簡単な 2 個のステートからなる回転検知と回転
// 作動すると、目標回転を検知します。
// at_rot_target, not_at_rot_target, llRotTarget, llRotTargetRemove
// の純粋なサンプルがほとんどなかったので、サンプルを書きました。

integer rottarget;

default
{

    state_entry(){ 
        rottarget = llRotTarget(llEuler2Rot(fliprot*DEG_TO_RAD), 0.1);
        llSetPrimitiveParams ([PRIM_ROTATION, llEuler2Rot(standrot*DEG_TO_RAD)]); // 最初の回転位置まで回転する
    }

    not_at_rot_target()
    { 
        llRotTargetRemove( rottarget );
        llOwnerSay("not there"); //目標ではない
    }
        
    touch_start (integer total_number)
    {
        state rotatestate; // ステートを切り替えて、新しい位置に
    }
}
             
      
state rotatestate 
{ 
    state_entry(){ 
        rottarget = llRotTarget(llEuler2Rot(fliprot*DEG_TO_RAD), 0.1);
        llSetPrimitiveParams ([PRIM_ROTATION, llEuler2Rot(fliprot*DEG_TO_RAD)]); // 新しい回転位置まで回転する
    }
    
    at_rot_target(integer tnum, rotation targetrot, rotation ourrot)
    { 
        llRotTargetRemove( rottarget );
        llOwnerSay("there"); //目標に到達
    }

    touch_start(integer touched){ 
        state default; 
    }
    
}

関連項目

イベント

• at_rot_target not_at_rot_target 回転目標に達したときのイベント
• at_target not_at_target 位置目標に達したときのイベント

関数

•  llRotTargetRemove 回転目標を登録解除します
•  llTarget 位置目標を登録します
•  llTargetRemove 位置目標を登録解除します

特記事項

Search JIRA for related Issues

Signature

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