Difference between revisions of "LlDetectedRot/ja"

From Second Life Wiki
Jump to navigation Jump to search
(New page: {{LSL_Function/detected/ja|number|rot}} {{LSL_Function/ja |func_id=38|func_sleep=0.0|func_energy=10.0 |sort=DetectedRot |func=llDetectedRot|return_type=rotation|p1_type=integer|p1_name=num...)
 
 
(4 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{LSL_Function/detected/ja|number|rot}}
{{LSL_Function/detected/ja|number|rot|error=[[ZERO_VECTOR/ja|<0.0, 0.0, 0.0, 1.0>]]}}{{LSL_Function/ja
{{LSL_Function/ja
|func_id=38|func_sleep=0.0|func_energy=10.0
|func_id=38|func_sleep=0.0|func_energy=10.0
|sort=DetectedRot
|sort=DetectedRot
|func=llDetectedRot|return_type=rotation|p1_type=integer|p1_name=number
|func=llDetectedRot|return_type=rotation|p1_type=integer|p1_name=number
|func_footnote=Returns {{LSLG|ZERO_ROTATION/ja|<0.0, 0.0, 0.0, 1.0>}}が返るとき、'''number'''は検出されたオブジェクトの妥当な番号ではありません。
|func_footnote='''number''' が検出されたオブジェクトの妥当な番号ではないとき {{LSLG|ZERO_ROTATION/ja|<0.0, 0.0, 0.0, 1.0>}} が返ります。
|func_desc
|func_desc
|return_text={{LSLGC|Detected/ja|検出}}したオブジェクトの'''number'''の回転
|return_text=検出したオブジェクト '''number''' の回転
|spec
|spec
|caveats
|caveats
|constants
|constants
|examples=
|examples=
<lsl>//--// get compass facing of Avatar that touches this object //--//
<source lang="lsl2">//--// オブジェクトにタッチしたアバターに、コンパスの針が向くようにします //--//


//-- @@ = Contains code optimizations, see the following page for details
//-- コンパスの方向のリスト。東から時計周りに
//-- wiki.secondlife.com/wiki/User:Void_Singer/Optimizations
list gLstCompassPoints = [ "East", "NorthEast", "North", "NorthWest", "West", "SouthWest", "South", "SouthEast" ];


  //-- list of compass directions starting at North, rotated clockwise
  //-- 回転を Z 軸中心のコンパスの方向に変換します
list gLstCompassPoints = [ "North", "NorthEast", "East", "SouthEast", "South", "SouthWest", "West", "NorthWest" ];
 
//-- convert rotation to z-axis compass direction
string CompassDirection( rotation rRotBase )
string CompassDirection( rotation rRotBase )
{
{
   integer iCountCompassPoints = llGetListLength(gLstCompassPoints);
   integer iCountCompassPoints = llGetListLength(gLstCompassPoints);
   //-- convert rotation to a direction
   //-- 回転を方向に変えます
   vector vDirection = <0.0, 1.0, 0.0> / rRotBase;
   vector vDirection = <0.0, 1.0, 0.0> / rRotBase;
   //-- take the direction and determine the z rotation
   //-- 方向から、Z 軸中心の回転を算出します
   float fAngle = llAtan2(vDirection.x, vDirection.y);
   float fAngle = llAtan2(vDirection.x, vDirection.y);
   //-- take the angle and find the compass point
   //-- 角度をから、コンパス位置を算出します
  take the angle and find the compass point
   integer iCompassPoint = llRound(fAngle * iCountCompassPoints / TWO_PI);
   integer iCompassPoint = llRound(fAngle * iCountCompassPoints / TWO_PI);
   //-- convert to string
   //-- 文字列に変換します
   return llList2String( gLstCompassPoints, iCompassPoint );
   return llList2String( gLstCompassPoints, iCompassPoint );
}
}
Line 47: Line 44:
             llDetectedName( vIntCounter )
             llDetectedName( vIntCounter )
             + " is facing "
             + " is facing "
               //-- next line gets avatar rotation and converts to compass direction
               //-- 次の行でアバターの回転を取得し、コンパスの方向に変換します
             + CompassDirection( llDetectedRot( vIntCounter ) ) );
             + CompassDirection( llDetectedRot( vIntCounter ) ) );
     } while ( ++vIntCounter < vIntTouchCount );
     } while ( ++vIntCounter < vIntTouchCount );
   }
   }
}</lsl>
}</source>
|helpers
|helpers
|also_functions
|also_functions

Latest revision as of 14:31, 25 February 2016

要約

関数: rotation llDetectedRot( integer number );

検出したオブジェクト number の回転を rotation で返します。

• integer number 探知情報の番号

number には 負のインデックス を使用できません。 number が検出されたオブジェクトの妥当な番号ではないとき <0.0, 0.0, 0.0, 1.0> が返ります。

仕様

llDetected* 関数はどこでも使用可能ですが、探知イベント (collision, collision_start, collision_end, sensor, touch, touch_start, touch_end) の中、または探知イベントで呼ばれた関数の中で呼び出されたときのみ使用可能な値を返します。

警告

  • number が正常なインデックス範囲を外れていても、この関数は <0.0, 0.0, 0.0, 1.0> を返し、スクリプトはエラー表示を出さずに処理を続けます。
  • llDetected* 関数が有効になるイベントは、常に少なくとも 1 個以上の探知結果を返します。
    • 何も探知されなかった場合、探知イベントは発生しません。[1]
    • 探知イベントの探知個数を表す引数は、最初は決して 1 未満にはなりません。[2]

サンプル

//--// オブジェクトにタッチしたアバターに、コンパスの針が向くようにします //--//

 //-- コンパスの方向のリスト。東から時計周りに
list gLstCompassPoints = [ "East", "NorthEast", "North", "NorthWest", "West", "SouthWest", "South", "SouthEast" ];

 //-- 回転を Z 軸中心のコンパスの方向に変換します
string CompassDirection( rotation rRotBase )
{
  integer iCountCompassPoints = llGetListLength(gLstCompassPoints);
   //-- 回転を方向に変えます
  vector vDirection = <0.0, 1.0, 0.0> / rRotBase;
   //-- 方向から、Z 軸中心の回転を算出します
  float fAngle = llAtan2(vDirection.x, vDirection.y);
   //-- 角度をから、コンパス位置を算出します
   take the angle and find the compass point
  integer iCompassPoint = llRound(fAngle * iCountCompassPoints / TWO_PI);
   //-- 文字列に変換します
  return llList2String( gLstCompassPoints, iCompassPoint );
}

default{
  state_entry()
  {
    llSay( 0, "Touch me to get your compass facing" );
  }

  touch_start( integer vIntTouchCount )
  {
    integer vIntCounter = 0;
    do
    {
      llSay( 0,
             llDetectedName( vIntCounter )
             + " is facing "
              //-- 次の行でアバターの回転を取得し、コンパスの方向に変換します
             + CompassDirection( llDetectedRot( vIntCounter ) ) );
    } while ( ++vIntCounter < vIntTouchCount );
  }
}

関連項目

記事

•  検出

特記事項

Search JIRA for related Issues

脚注

  1. ^ 例外は no_sensor ですが、ここでは llDetected* 関数は有効にはなりません。
  2. ^ 他のあらゆるイベント引数と同じように、ユーザは初期値を上書きすることができます。

Signature

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