Difference between revisions of "LlSetRot/ja"

From Second Life Wiki
Jump to navigation Jump to search
(New page: {{LSL_Function/ja|func_id=61|func_sleep=0.2|func_energy=10.0|func=llSetRot |p1_type=rotation|p1_name=rot |func_desc=プリムの回転に'''rot'''を設定します。 |return_text|spec |s...)
 
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{LSL_Function/ja|func_id=61|func_sleep=0.2|func_energy=10.0|func=llSetRot
{{Issues/SVC-93}}{{LSL_Function/ja|func_id=61|func_sleep=0.2|func_energy=10.0|func=llSetRot
|p1_type=rotation|p1_name=rot
|p1_type=rotation|p1_name=rot
|func_desc=プリムの回転に'''rot'''を設定します。
|func_desc=プリムの回転に '''rot''' を設定します。
|return_text|spec
|return_text
|sort=SetRot
|spec=この関数は非物理属性のルートプリムとその全ての子プリムに適用できます。もしオブジェクトが物理属性であれば、そのルートプリムでの効果もありません。
|caveats=*プリムが装着されている場合、この関数はアバタの回転によって相殺します。
|caveats=*プリムが装着されている場合、この関数はアバターの回転によって回転を補正します。
*プリムがルートプリムではない場合、ルートプリムの[[Viewer coordinate frames#Local|ローカル]]回転によって相殺されます。回避策はルートプリムの回転で割ることです。
*プリムがルートプリムの場合、ルートプリムの [[Viewer coordinate frames/ja#Local|ローカル]] 回転で補正します。回避策は、ルートプリムの回転で回転を割ることです。
**ルートプリムと相対的に子プリムの回転を設定しようとしている場合、ルートプリムの回転でローカル回転を割ります。
**子プリムの回転をルートプリムに相対して設定しようとしているのであれば、ローカル回転をルートプリムの回転で割りましょう。
**グローバル回転を子プリムの回転へ設定しようとしている場合、'''2倍'''にしたルートプリムの回転でグローバル回転を割る必要があります。
**子プリムの回転をグローバル回転で設定しようとしているのであれば、グローバル回転をルートプリムの回転で '''2 回''' 割る必要があります。
**たとえグローバル回転を子プリムの回転に設定するとしても、子プリムの回転を設定するには[[llSetLocalRot/ja|llSetLocalRot]]を使うとよりうまくいきます。 (その場合、ルートプリムの回転と掛けます。)
**子プリムの回転を設定するには、グローバル回転で設定しようとしているのであっても (この場合、ルートプリムの回転を掛けます)、 {{LSLG/ja|llSetLocalRot}} を使用したほうがよいです。
**装着されたオブジェクトの、ルートプリムの[[Viewer coordinate frames#Local|ローカル]]回転を取得するのは容易ではありません。(ほかにはルートプリムから取得する方法が存在します)
**装着されたオブジェクトのルートプリムの [[Viewer coordinate frames/ja#Local|ローカル]] 回転を取得する簡単な方法は (ルートプリムから申告させる場合を除いて) ありません。
*小さく回転するには、変更する時間帯の間隔に応じて、基準点を上げます。6°より下に制限しているように見せることはできません。
*小さく回転させるには、時間拡張によって変更のしきい値が更新される場合があります。6° ルールに制限されることはもうないです。
|spec
|spec
|constants
|constants
|examples=回転を1°ずつ増加するプリムに、このスクリプトをドロップします。
|examples=このスクリプトをプリムに入れると、プリムが 1° ずつ回転していきます。
<lsl>
<source lang="lsl2">
rotation rot_xyzq;
rotation rot_xyzq;


Line 21: Line 21:
     state_entry()
     state_entry()
     {
     {
         vector xyz_angles = <0,1.0,0>; // This is to define a 1 degee change
         vector xyz_angles = <0,1.0,0>; // 1° の回転を定義します
         vector angles_in_radians = xyz_angles*DEG_TO_RAD; // Change to Radians
         vector angles_in_radians = xyz_angles*DEG_TO_RAD; // ラジアンに変換
         rot_xyzq = llEuler2Rot(angles_in_radians); // Change to a Rotation
         rot_xyzq = llEuler2Rot(angles_in_radians); // 回転に変換
     }
     }


     touch_start(integer s)
     touch_start(integer s)
     {
     {
         llSetRot(llGetRot()*rot_xyzq); //Do the Rotation...
         llSetRot(llGetRot()*rot_xyzq); //回転を実行します...


     }
     }
}
}
</lsl>
</source>
|helpers
|helpers
|also_functions=
|also_functions=
{{LSL DefineRow||[[llGetRot/ja|llGetRot]]|}}
{{LSL DefineRow||{{LSLG/ja|llGetRot}}|}}
{{LSL DefineRow||[[llSetLocalRot/ja|llSetLocalRot]]|}}
{{LSL DefineRow||{{LSLG/ja|llSetLocalRot}}|}}
{{LSL DefineRow||{{LSLG/ja|llTargetOmega}}|}}
|also_tests
|also_tests
|also_events
|also_events
|also_articles
|also_articles
|notes
|notes
|issues
|cat1=Movement
|cat1=Movement
|cat2=Rotation
|cat2=Rotation

Latest revision as of 13:18, 25 February 2016

要約

関数: llSetRot( rotation rot );

プリムの回転に rot を設定します。

• rotation rot

仕様

この関数は非物理属性のルートプリムとその全ての子プリムに適用できます。もしオブジェクトが物理属性であれば、そのルートプリムでの効果もありません。

警告

  • この関数は 0.2 秒間、スクリプトを停止します。
  • プリムが装着されている場合、この関数はアバターの回転によって回転を補正します。
  • プリムがルートプリムの場合、ルートプリムの ローカル 回転で補正します。回避策は、ルートプリムの回転で回転を割ることです。
    • 子プリムの回転をルートプリムに相対して設定しようとしているのであれば、ローカル回転をルートプリムの回転で割りましょう。
    • 子プリムの回転をグローバル回転で設定しようとしているのであれば、グローバル回転をルートプリムの回転で 2 回 割る必要があります。
    • 子プリムの回転を設定するには、グローバル回転で設定しようとしているのであっても (この場合、ルートプリムの回転を掛けます)、 llSetLocalRot を使用したほうがよいです。
    • 装着されたオブジェクトのルートプリムの ローカル 回転を取得する簡単な方法は (ルートプリムから申告させる場合を除いて) ありません。
  • 小さく回転させるには、時間拡張によって変更のしきい値が更新される場合があります。6° ルールに制限されることはもうないです。

サンプル

このスクリプトをプリムに入れると、プリムが 1° ずつ回転していきます。

rotation rot_xyzq;

default
{
    state_entry()
    {
        vector xyz_angles = <0,1.0,0>; // 1° の回転を定義します
        vector angles_in_radians = xyz_angles*DEG_TO_RAD; // ラジアンに変換
        rot_xyzq = llEuler2Rot(angles_in_radians); // 回転に変換
    }

    touch_start(integer s)
    {
        llSetRot(llGetRot()*rot_xyzq); //回転を実行します...

    }
}

関連項目

関数

•  llGetRot
•  llSetLocalRot
•  llTargetOmega

特記事項

All Issues

~ Search JIRA for related Issues
   llSetRot and llSetPrimitiveParams (using PRIM_ROTATION) incorrectly implemented for child prims.

Signature

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