LlRotTarget/ja
Jump to navigation
Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
LSL ポータル | 関数 | イベント | 型 | 演算子 | 定数 | 実行制御 | スクリプトライブラリ | カテゴリ別スクリプトライブラリ | チュートリアル |
要約
関数: integer llRotTarget( rotation rot, float error );
この関数で、ある回転に到達したときに、スクリプトにそれを知らせることができます。
rot を error と一緒に登録し、登録解除されるまで at_rot_target や not_at_rot_target を継続的に発生させます。
llRotTargetRemove を使って目標を登録解除するためのハンドラを integer で返します。
• rotation | rot | – | 目標とする回転 | |
• float | error | – | rot に到達したか決める角度誤差をラジアンで |
同じような関数が位置についてもあります: llTarget
この関数はオブジェクトを回転させません。回転させるには、llSetRot 、llRotLookAt 、llLookAt を使用してください。
サンプル
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 | – | 位置目標を登録解除します |
特記事項
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。