Difference between revisions of "LlSetPos/ja"

From Second Life Wiki
Jump to navigation Jump to search
m (Undo revision 850072 by Mako Nozaki (Talk))
Line 1: Line 1:
{{LSL Function/ja
{{Issues/SVC-1945}}{{LSL Function/ja
|func_id=58|func_sleep=0.2|func_energy=10.0
|func_id=58|func_sleep=0.2|func_energy=10.0
|func=llSetPos
|func=llSetPos
|p1_type=vector|p1_name=pos|p1_desc=[[Viewer coordinate frames#Region|リージョン]]あるいは状況による[[Viewer coordinate frames#local|ローカル構成上]](''[[#Specification]]''参照)の位置。
|p1_type=vector|p1_name=pos|p1_desc=状況によって、 [[Viewer coordinate frames/ja#Region|リージョン]] または [[Viewer coordinate frames/ja#local|ローカル座標]] (''[[#Specification|仕様]]'' 参照のこと) 。|p1_hover=状況によって、リージョンまたはローカル座標。
|func_desc=移動物理を用いずに、オブジェクトあるいはプリミティブを'''pos'''に向けて移動します。
|func_desc=オブジェクトまたはプリムを、物理特性を使わずに '''pos''' へ移動させます。
|func_footnote=動作はアタッチされていないルートプリムからの呼び出し毎に10mが上限です。
|func_footnote=移動はアタッチメントでないルートプリムでは 1 回の呼び出しで 10 m に制限されています。{{Footnote|明記されていない [[warpPos]] バグを利用しない限り}}
|spec=
|spec=
=====構成枠=====
=====座標フレーム=====
*ルートプリム (あるいはシングルプリムオブジェクト)
*ルートプリム (もしくはシングルプリムのオブジェクト)
**アタッチ
**装着されている
***'''pos'''はアタッチポイントに相対的な[[Viewer coordinate frames#Local|ローカル構成]]です。
***'''pos''' は装着ポイントに対する [[Viewer coordinate frames/ja#Local|ローカル座標]] です。
**非アタッチ
**装着されていない
***'''pos'''は[[Viewer coordinate frames#Region|リージョン構成]]です。
***'''pos''' は [[Viewer coordinate frames/ja#Region|リージョン座標]] です。
*子プリム(ルートプリムではない)
*子プリム (ルートプリムでない)
**'''pos'''はルートプリムと相対的な[[Viewer coordinate frames#Local|ローカル構成]]です。
**'''pos''' はルートプリムに対する [[Viewer coordinate frames/ja#Local|ローカル座標]] です。
|caveats=
|caveats=
*この関数はローカルとリージョナルの構成が混在しているため、プリムのポジションが欲しいときは、[[llGetLocalPos/ja|llGetLocalPos]]を使うのがベストです。
*この関数は内部でローカル座標とリージョン座標が混在しているため、プリムの位置が知りたいときは {{LSLG/ja|llGetLocalPos}} を使用するのが最適です。
*この関数は物理オブジェクトでは動作しません。代わりに[[llMoveToTarget/ja|llMoveToTarget]]を用います。
*この関数は物理オブジェクトでは動作しません。代わりに {{LSLG/ja|llMoveToTarget}} を使用しましょう。
|constants
|constants
|examples=
|examples=
<lsl>
<lsl>
//Move the object up 1m when someone touches it.
//誰かがタッチしたら、オブジェクトを 1m 上へ移動させます。
default {
default {
     touch_start(integer i) {
     touch_start(integer i) {
           llSetPos(llGetPos() + <0,0,1>);
           llSetPos(llGetPos() + <0,0,1>);
     }
     }
}
// 小さい移動のときのバグを回避するためにこれを使います
// - created by Madpeter Zond
// 注意: リンクされたプリムで、移動可能な範囲を超えたかどうかのチェックは行っていません
llSetLocalPos(vector offset)
{
    vector save = offset;
    if(offset.x < 0.0) offset.x -= 1;
    else offset.x += 1;
    if(offset.y < 0.0) offset.y -= 1;
    else offset.y += 1;
    if(offset.z < 0.0) offset.z -= 1;
    else offset.z += 1;
    llSetPos(offset);
    llSetPos(save);   
}
}
</lsl>
</lsl>
|helpers
|helpers
|also_functions={{LSL DefineRow||[[llGetLocalPos/ja|llGetLocalPos]]|アタッチされているかルートプリムではない場合、プリムのローカルポジションを返します。(別のグローバルポジションが返ります)}}
|also_functions={{LSL DefineRow||{{LSLG/ja|llGetLocalPos}}|装着されているかルートプリムではない場合、プリムのローカル位置を返します。 (そうでなければ、グローバル位置を返します)}}
{{LSL DefineRow||[[llGetPos/ja|llGetPos]]|たとえアタッチされているかルートプリムではなかったとしても、プリムのグローバルポジションを返します。}}
{{LSL DefineRow||{{LSLG/ja|llGetRootPosition}}|ルートプリムの位置を返します。}}
{{LSL DefineRow||{{LSLG/ja|llGetPos}}|装着されていてもルートプリムでなくても、プリムのグローバル位置を返します。}}
|also_tests
|also_tests
|also_events
|also_events
|also_articles
|also_articles
|notes
|notes=複数回の移動コマンドは {{LSLG/ja|llSetPrimitiveParams}} と {{LSLG/ja|PRIM_POSITION}} で連結させることができます。この長所は、1 回の動作ごとでなく、関数の呼び出しごとにだけスクリプトが休止することです。
|cat1=Movement
|cat1=Movement
|cat2=Prim
|cat2=Prim

Revision as of 13:09, 9 May 2010

要約

関数: llSetPos( vector pos );

オブジェクトまたはプリムを、物理特性を使わずに pos へ移動させます。

• vector pos 状況によって、 リージョン または ローカル座標 (仕様 参照のこと) 。

移動はアタッチメントでないルートプリムでは 1 回の呼び出しで 10 m に制限されています。[1]

仕様

座標フレーム
  • ルートプリム (もしくはシングルプリムのオブジェクト)
  • 子プリム (ルートプリムでない)

警告

  • この関数は 0.2 秒間、スクリプトを停止します。
  • この関数は内部でローカル座標とリージョン座標が混在しているため、プリムの位置が知りたいときは llGetLocalPos を使用するのが最適です。
  • この関数は物理オブジェクトでは動作しません。代わりに llMoveToTarget を使用しましょう。

サンプル

<lsl> //誰かがタッチしたら、オブジェクトを 1m 上へ移動させます。 default {

    touch_start(integer i) {
         llSetPos(llGetPos() + <0,0,1>);
    }

} // 小さい移動のときのバグを回避するためにこれを使います // - created by Madpeter Zond // 注意: リンクされたプリムで、移動可能な範囲を超えたかどうかのチェックは行っていません llSetLocalPos(vector offset) {

   vector save = offset;
   if(offset.x < 0.0) offset.x -= 1;
   else offset.x += 1;
   if(offset.y < 0.0) offset.y -= 1;
   else offset.y += 1;
   if(offset.z < 0.0) offset.z -= 1;
   else offset.z += 1;
   llSetPos(offset);
   llSetPos(save);    

}

</lsl>

注意点

複数回の移動コマンドは llSetPrimitiveParamsPRIM_POSITION で連結させることができます。この長所は、1 回の動作ごとでなく、関数の呼び出しごとにだけスクリプトが休止することです。

関連項目

関数

•  llGetLocalPos 装着されているかルートプリムではない場合、プリムのローカル位置を返します。 (そうでなければ、グローバル位置を返します)
•  llGetRootPosition ルートプリムの位置を返します。
•  llGetPos 装着されていてもルートプリムでなくても、プリムのグローバル位置を返します。

特記事項

All Issues

~ Search JIRA for related Issues
   llSetPos() doesn't change position for small vectors when called in attachments on Havok4 unless interacted with

脚注

  1. ^ 明記されていない warpPos バグを利用しない限り

Signature

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