vci:script:reference:exporttransform

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
vci:script:reference:exporttransform [2021/11/17 21:14]
numa
vci:script:reference:exporttransform [2023/08/28 19:07] (現在)
pastatto 統合リンク修正
ライン 1: ライン 1:
 +~~NOTOC~~
 ====== ExportTransform ====== ====== ExportTransform ======
 +<WRAP center round important 80%>
  
-ExportTransformスはTransformやRigidbody干渉る事できるクラスです。\\ +このページは過去の情報となります。\\ 
-VCIの移動、回転、縮尺の変更や、力を与えて回転させたり、吹き飛ばしたりする事ができます。\\+新しいスリプトリファレンスは**[[https://​developer.virtualcast.jp/​vci-docs/​api/​|こちら]]**なりま。 
 +</​WRAP>​ 
 +ExportTransformクラスはVCIオブジェクトを扱うクラスです。\\ 
 +オブジェクトはUnityTransformに対応し、加えてRigidbodyやSubItemの操作も含まれます。\\ 
 +たとえば移動、回転、縮尺の変更や、力を与えて回転させたり、吹き飛ばしたりする事ができます。
  
-===== メンバ変数関数一覧 =====+^ ExportAssets ^^^ 
 +^ 名前 ^ 説明 ^ バージョン 
 +| [[vci/​script/​reference/​exporttransform#​GetTransform | GetTransform]] | VCI内のTransformを取得 | | 
 +^ ExportTransform ^^^ 
 +^ 名前 ^ 説明 ^ ージョン ^ 
 +| [[vci/​script/​reference/​exporttransform#​GetName]] | Transformの名前を取得 | | 
 +| [[vci/​script/​reference/​exporttransform#​GetPosition / GetLocalPosition]] | Transformの位置を取得| | 
 +| [[vci/​script/​reference/​exporttransform#​GetRotation / GetLocalRotation]] | Transformの回転を取得| | 
 +| [[vci/​script/​reference/​exporttransform#​GetLocalScale]] | Transformの縮尺を取得 | | 
 +| [[vci/​script/​reference/​exporttransform#​GetVelocity]] | Rigidbodyの速度をVector3として取得 | | 
 +| [[vci/​script/​reference/​exporttransform#​GetAngularVelocity]] | Rigidbodyの角速度をVector3として取得 | | 
 +| [[vci/​script/​reference/​exporttransform#​GetForward / GetRight / GetUp]] | Transformを基準に前右・上のVector3を取得 | | 
 +| [[vci/​script/​reference/​exporttransform#​GetLocalToWorldMatrix]] | ローカル→ワールド座標に変換した時の行列 | | 
 +| [[vci/​script/​reference/​exporttransform#​GetAttractable]] | SubItemが引き寄せ可能かどうか | | 
 +| [[vci/​script/​reference/​exporttransform#​SetPosition / SetLocalPosition]] | Transformの位置をVector3で変更 | | 
 +| [[vci/​script/​reference/​exporttransform#​SetRotation / SetLocalRotation ]] | Transformの回転をQuaternionで変更 | | 
 +| [[vci/​script/​reference/​exporttransform#​SetLocalScale]] | Transformの縮尺をVector3で変更 | | 
 +| [[vci/​script/​reference/​exporttransform#​SetVelocity ]] | Rigidbodyに加わっている力をVector3で変更 | | 
 +| [[vci/​script/​reference/​exporttransform#​SetAngularVelocity ]] | Rigidbodyに加わってる回転をVector3で変更 | | 
 +| [[vci/​script/​reference/​exporttransform#​AddForce]] | 指定したForceModeでRigidbodyに力を付与 | v2.2.1a以降 | 
 +| [[vci/​script/​reference/​exporttransform#​SetAttractable]] | SubItemの引き寄せを設定 | | 
 +| [[vci/​script/​reference/​exporttransform#​IsMine]] | SubItemの所有者かどうか | | 
 +| [[vci/​script/​reference/​exporttransform#​IsSubItem]] | SubItemかどうか | | 
 +| [[vci/​script/​reference/​exporttransform#​SetActive / ActiveSelf / ActiveInHierarchy ]] | Transform 自身の有効無効設定を設定 | v2.0.1a以降 | 
 +^ 他のクラスで使用 ^^^ 
 +^ 名前 ^ 説明 ^ バージョン ^ 
 +| GetAnimation | [[vci:​script:​reference:​exportanimation|ExportAnimation]]を使用 |  | 
 +| GetAudioSources | [[vci:​script:​reference:​exportaudiosource|ExportAudioSource]]を使用 | v2.0.3b以降  |
  
-** [EmbeddedScriptWorkspace]フォルダ内の[types.lua]を開くと一覧を確認できます。** +ExportTransformクラスを使うには ''​local transform ​= vci.assets.GetTransform("SubItemName") '' ​のようにTransformの名前指定してインスタンス化します。\\ 
- +その後、 ''​transform.各関数()''​ と各関数を実行きます。
-**表記の省略の為、''​Vector3型''​ は ''​Vec3''​、''​number型''​ は ''​num''​ と表記してあります。**\\ +
-**引数は ''​()''​ の中に、戻り値の型は '':​(セミコロン)''​ の後に表記してあります。**\\ +
- +
----- +
- +
-^ 名前 ^ 説明 ^ VCバージョン ^ +
-| [[vci/​script/​reference/​exporttransform#​GetName | GetName fun(): string]] | Subitemの名前を取得できます | | +
-| [[vci/​script/​reference/​exporttransform#​GetPosition() / GetLocalPosition() | GetLocalPosition fun(): Vec3]] | SubitemのPositionを取得できます\\ (Subitemローカル) | | +
-| [[vci/​script/​reference/​exporttransform#​GetPosition() / GetLocalPosition() | GetPosition fun(): Vec3]] | SubitemのPositionを取得できます | | +
-| [[vci/​script/​reference/​exporttransform#​GetRotation() / GetLocalRotation() | GetLocalRotation fun(): Quaternion]] | SubitemのRotationを取得できます\\ (Subitemローカル) | | +
-| [[vci/​script/​reference/​exporttransform#​GetRotation() / GetLocalRotation() | GetRotation fun(): Quaternion]] | SubitemのRotationを取得できます | | +
-| [[vci/​script/​reference/​exporttransform#​GetLocalScale() | GetLocalScale fun(): Vec3]] | Subitemのscaleを取得できます | | +
-| GetRight fun(): Vec3 | Subitemを基準にした右方向(X軸プラス)のベクトルを取得できます | | +
-| GetUp fun(): Vec3 | Subitemを基準にした上方向(Y軸プラス)のベクトルを取得できます | | +
-| [[vci/​script/​reference/​exporttransform#​GetForward() | GetForward fun(): Vec3]] | Subitemを基準にした正面方向(Z軸プラス)のベクトルを取得できます | | +
-| GetLocalToWorldMatrix fun(): Matrix4x4 | ローカル座標からワールド座標に変換した時の行列 | | +
-| GetAttractable fun(): bool | | | +
-| GetAnimation fun(): ExportAnimation | [[vci:​script:​reference:​exportanimation|ExportAnimation]]を使用するのに使います |  +
-| GetAudioSources fun(): ExportAudioSource[] | [[vci:​script:​reference:​exportaudiosource|ExportAudioSource]]を使用するのに使います\\ 対象のExportTransformが表すGameObjectにアタッチされているすべてのAudioSourceを返します | v2.0.3b以降 | +
-| [[vci/​script/​reference/​exporttransform#​IsMine | IsMine bool]] | SubItemの所有者の場合 true を返し、そうでなければ nil を返します | | +
-| IsSubItem bool | SubItemの場合は true を返し、そうでなければ false を返します | | +
-| [[vci/​script/​reference/​exporttransform#​SetActive() / ActiveSelf / ActiveInHierarchy | ActiveInHierarchy bool]] |  |  | +
-| [[vci/​script/​reference/​exporttransform#​SetActive() / ActiveSelf / ActiveInHierarchy | ActiveSelf bool]] | Transform 自身の有効無効設定を取得します | v2.0.1a以降 | +
-| [[vci/​script/​reference/​exporttransform#​SetPosition() / SetLocalPosition() | SetPosition fun(position:​ Vec3)]] | SubitemのPositionの値をVec3で指定した値に変更します | | +
-| [[vci/​script/​reference/​exporttransform#​SetPosition() / SetLocalPosition() | SetLocalPosition fun(localPosition:​ Vec3)]] | SubitemのPositionの値をVec3で指定した値に変更します | | +
-| [[vci/​script/​reference/​exporttransform#​SetRotation() / SetLocalRotation() | SetRotation fun(rotation:​ Quaternion)]] | SubitemのRotationの値をQuaternionで指定した値に変更します | | +
-| [[vci/​script/​reference/​exporttransform#​SetRotation() / SetLocalRotation() | SetLocalRotation fun(localRotation:​ Quaternion)]] | SubitemのRotationの値をQuaternionで指定した値に変更します | | +
-| [[vci/​script/​reference/​exporttransform#​SetLocalScale() | SetLocalScale fun(localScale:​ Vec3)]] | Subitemのscaleの値をVec3で指定した値に変更します | | +
-| [[vci/​script/​reference/​exporttransform#​SetVelocity() | SetVelocity fun(velocity:​ Vec3)]] | Subitemに加わっている力をVec3で指定した値に変更します | | +
-| [[vci/​script/​reference/​exporttransform#​SetAngularVelocity() | SetAngularVelocity fun(angularVelocity:​ Vec3)]] | Subitemに加わってる回転をVec3で押した方向に変更します | | +
-| [[vci/​script/​reference/​exporttransform#​AddForce() | AddForce fun(force: Vec3)]] | Vec3で指定した値の力をSubitemに与えます | | +
-| [[vci/​script/​reference/​exporttransform#​SetActive() / ActiveSelf / ActiveInHierarchy | SetActive fun(isActive:​ bool)]] | Transform 自身の有効無効設定を設定します(非同期) | v2.0.1a以降 | +
-| [[vci/​script/​reference/​exporttransform#​SetActive() / ActiveSelf / ActiveInHierarchy | _ALL_SetActive fun(isActive:​ bool)]] | Transform 自身の有効無効設定を設定します(全員へ同期) | v2.0.1a以降 | +
- +
-** 装着アイテム関連 ** +
- +
-| 名前 | 説明 | VCバージョン | +
-| [[vci/​script/​reference/​exporttransform#​装着アイテム操作 | IsAttached bool]] | 装着されている場合に true を返します | 1.9.2a以降 | +
-| [[vci/​script/​reference/​exporttransform#​装着アイテム操作 | AttachableDistance number]] | 装着可能な距離を返します | 1.9.2a以降 | +
-| AttachableHumanBodyBones usertype | 装着可能なボーン名一覧をtableで返します | 1.9.2a以降 | +
-| [[vci/​script/​reference/​exporttransform#​装着アイテム操作 | AttachToAvatar fun()]] | 装着可能な場合に、装着を試みます | 1.9.2a以降 | +
-| [[vci/​script/​reference/​exporttransform#​装着アイテム操作 | DetachFromAvatar fun()]] | 装着している場合に、脱着します | 1.9.2a以降 | +
-| SetAttractable fun(value: bool) |  | | +
- +
-ExportTransformクラスを使うには ''​Subitem ​= vci.assets.GetSubItem("Subitem") '' ​といSubitemを名前指定してインスタンス化します。\\ +
-その後、 ''​Subitem.各メソッド()''​ という風に実行してゆきます。+
  
 ===== VCIの同期について ===== ===== VCIの同期について =====
ライン 63: ライン 50:
  
   * transformはバーチャルキャストの機能によって同期します。\\   * transformはバーチャルキャストの機能によって同期します。\\
-  * ''​_ALL_''​ のついたメソッドは同期して実行されます。\\+  * ''​_ALL_''​ のついた関数は同期して実行されます。\\
   * [[vci/​script/​reference/​syncvariable|同期変数]]を使用してVCIの状態を同期させます。\\   * [[vci/​script/​reference/​syncvariable|同期変数]]を使用してVCIの状態を同期させます。\\
  
ライン 69: ライン 56:
 詳細なtransformの同期については [[vci:​component:​sdk:​subitem:​owned|VCIアイテムとSubItemについて]] をご確認ください。 詳細なtransformの同期については [[vci:​component:​sdk:​subitem:​owned|VCIアイテムとSubItemについて]] をご確認ください。
  
-===== GetTransform() =====+===== GetTransform ===== 
 +<wrap em>​ExportAssets</​wrap>​**.GetTransform fun(name: string): [[vci:​script:​reference:​exporttransform|ExportTransform]]**
  
-サンプル\\+VCI 内のオブジェクトを取得します。 \\ 
 +引数 ''​name''​ に取得したいオブジェクト名を入れると、該当オブジェクトの ''​ExportTransform''​ を取得します。\\ 
 +指定した名前のオブジェクトが存在しない場合、 ''​nil''​ が返ります。 
 + 
 +取得した ''​ExportTransform''​ の関数を使用する事により、 transform の値の取得や変更を行う事ができます。\\ 
 +(詳しくは [[vci:​script:​reference:​exporttransform|ExportTransform]] を参照してください) 
 + 
 +**(バーチャルキャスト 2.3.1a 以降)** 
 + 
 +引数 ''​name''​ が ''/''​ から始まる文字列の場合、 ''​name''​ を VCIObject から見たパスとして検索し、該当パスにオブジェクトがあった場合はそのオブジェクトの ''​ExportTransform''​ を取得します。 \\ 
 +該当パスのオブジェクトが存在しない場合は、従来通り ''​name''​ 全体をオブジェクト名として検索します。 
 + 
 + 
 +=== サンプル ​===
 <file lua main.lua>​ <file lua main.lua>​
 --ExportTransform --ExportTransform
---オブジェクト名は「SubItem」 +--SubItem のオブジェクト名は「SubItem」 
-SubItem = vci.assets.GetTransform("​SubItem"​) ​+local SubItem = vci.assets.GetTransform("​SubItem"​) ​
  
-print(SubItem.GetName()) +print("Name: " .. SubItem.GetName()) 
-print(SubItem.ToString())+print("​Position:​ " .. SubItem.GetPosition().ToString()) 
 +print("​LocalPosition:​ " .. SubItem.GetLocalPosition().ToString()) 
 +print("​Rotation:​ " .. SubItem.GetRotation().ToString()) 
 +print("​LocalRotation:​ " .. SubItem.GetLocalRotation().ToString()) 
 +print("​LocalScale:​ " .. SubItem.GetLocalScale().ToString()) 
 +print("​Forward:​ " .. SubItem.GetForward().ToString())
 </​file>​ </​file>​
-\\ + 
-実行結果\\+=== 実行結果 ​===
 <​code>​ <​code>​
-SubItem +Name: SubItem 
-VCIEmbedded.LuaMoonSharp.ExportTransform+Position: (0.00, 1.00, 0.00) 
 +LocalPosition:​ (0.00, 0.00, 0.00) 
 +Rotation: (0.00000, 0.70711, 0.00000, 0.70711) 
 +LocalRotation:​ (0.00000, 0.00000, 0.00000, 1.00000) 
 +LocalScale: (1.00, 1.00, 1.00) 
 +Forward: (1.00, 0.00, 0.00)
 </​code>​ </​code>​
  
-''​vci.assets.GetTransform()''​ の引数にオブジェクト名を入れると、\\ +\\ 
-引数にしたオブジェクトのExportTransformをインスタン化する事ができます。\\ + 
-インスタンス化したExportTransformメソッドを使用する事にり、transform値を変更したり取得する事ができます。\\+ 
 +=== サプル2 パ指定での取得(バーチャルキャト 2.3.1a 以降) === 
 + 
 +以下のような構造の VCI の場合 
 + 
 +{{:​vci:​script:​reference:​gettransform_sample_2.png|}}
  
  
-サンプル2\\ 
 <file lua main.lua>​ <file lua main.lua>​
---ExportTransform +local shhere_1 ​= vci.assets.GetTransform("​/​SubItem1/​Sphere"
---SubItemに設定してるオブジェクト名は「SubItem」 +print(shhere_1.GetName()) 
-Item = vci.assets.GetTransform("​Item "​) ​+print(shhere_1.GetPosition())
  
-print(Item.GetPosition()) +local shhere_2 = vci.assets.GetTransform("/​SubItem2/​Sphere"​
-print(Item.GetLocalPosition()+print(shhere_2.GetName()) 
-print(Item.GetRotation()) +print(shhere_2.GetPosition())
-print(Item.GetLocalRotation()) +
-print(Item.GetLocalScale()) +
-print(Item.GetForward())+
 </​file>​ </​file>​
-\\ + 
-実行結果\\+=== 実行結果 ​=== 
 <​code>​ <​code>​
-(0.0, 1.20.0) +Sphere 
-(0.0, 1.2, 0.0) +(1.00, 2.50, 0.00
-(0.0, 0.0, 0.0, 1.0+Sphere 
-(0.0, 0.0, 0.0, 1.0) +(2.00, 1.00, 0.00)
-(1.0, 1.01.0+
-(0.0, 0.0, 1.0)+
 </​code>​ </​code>​
  
 ==== 複数のsubItemをfor文で宣言する ==== ==== 複数のsubItemをfor文で宣言する ====
  
 +SubItemの名前を ''​Item1''​ ''​Item2''​ ''​Item3''​ という風に連番で命名します。\\
 +そしたら for文を使って1からの連番で ''​GetTransform()''​ する事ができます。\\
 +※iは ''​tostring(i)''​ で文字列に変換できます。
 +
 +=== サンプル ===
 <file lua main.lua>​ <file lua main.lua>​
 -- テーブルをfor文で宣言する -- テーブルをfor文で宣言する
ライン 127: ライン 143:
 </​file>​ </​file>​
  
-SubItemの名前を ''​Item1''​ ''​Item2''​ ''​Item3''​ という風に連番で命名します。\\ 
-そしたら for文を使って1からの連番で ''​GetTransform()''​ する事ができます。\\ 
-※iは ''​tostring(i)''​ で文字列に変換できます。 
  
-===== IsMine ===== 
  
-サンプル\\ 
-<file lua main.lua>​ 
-item = vci.assets.GetTransform('​SubItem'​) 
-  
-function updateAll() -- 所有権に関係なく全ユーザーが十個する 
-    if item.IsMine then -- SubItemの所有者の場合 true 
-        item.SetPosition(Vector3.__new(1,​ 2, 3)) 
-    end 
-end 
-</​file>​ 
  
-SubItemの所有者の場合だけ処理したい場合などに使用します。\\ +===== GetName ===== 
-所有権については [[vci:​script:​reference:​eventfunction:​ownership|所有権とイベン関数の関係]] ​参考にしてください\\+<wrap em>​ExportTransform</​wrap>​**GetName fun(): string**\\ 
 +VCIのオブジェク取得できます 
 + 
 +=== 戻り値 === 
 +string
  
-===== GetName() =====+=== サンプル ​===
 <file lua main.lua>​ <file lua main.lua>​
-local cube = vci.assets.GetSubItem("​TestCube"​)+local cube = vci.assets.GetTransform("​TestCube"​)
  
 function onUse(use) function onUse(use)
ライン 156: ライン 162:
 end end
 </​file>​ </​file>​
-\\ + 
-実行結果\\+=== 実行結果 ​===
 <​code>​ <​code>​
 "​TestCube"​ "​TestCube"​
 </​code>​ </​code>​
-**戻り値:string**\\ 
-VCIのオブジェクト名を取得できます。 
  
-===== GetPosition() ​GetLocalPosition() =====+ 
 + 
 +===== GetPosition ​/ GetLocalPosition ===== 
 +**GetPosition fun(): Vector3**\\ 
 +**GetLocalPosition ​fun(): Vector3**\\ 
 +Transformの現在地を取得できます。\\ 
 +Position()の場合、Unityの原点(0,​0,​0)が基準になり、LocalPosition()の場合はVCIを出現させた位置が原点として扱われます。 
 + 
 +=== 戻り値 === 
 +Vector3 
 + 
 +=== サンプル ​===
 <file lua main.lua>​ <file lua main.lua>​
-local cube = vci.assets.GetSubItem("​TestCube"​)+local cube = vci.assets.GetTransform("​TestCube"​)
  
 function onUse(use) function onUse(use)
ライン 173: ライン 188:
 end end
 </​file>​ </​file>​
-\\ + 
-実行結果\\+=== 実行結果 ​===
 <​code>​ <​code>​
 (0.0, 1.2, 0.0) (0.0, 1.2, 0.0)
 </​code>​ </​code>​
-**戻り値:Vector3**\\ 
-Subitemの現在地を取得できます。\\ 
-Position()の場合、Unityの原点(0,​0,​0)が基準になり、LocalPosition()の場合はVCIを出現させた位置が原点として扱われます。 
  
-===== GetRotation() ​GetLocalRotation() =====+ 
 +===== GetRotation ​/ GetLocalRotation ===== 
 +**GetRotation fun(): Quaternion**\\ 
 +**GetLocalRotation ​fun(): Quaternion**\\ 
 +Transformの回転(Quaternion)を取得できます。\\ 
 +[[https://​blog.virtualcast.jp/​blog/​2019/​11/​quaternion/​ | Quaternionとは]] 
 +Rotation()の場合、Unity全体が基準の回転(Z+が正面)となり、LocalRotation()の場合はVCIを出現させた時の方向を基準とした回転として扱われます。\\ 
 +''​SetRotation(Quaternion.identity)''​ UnityのZ+が正面方向として、姿勢を変更できます。 
 + 
 +=== 戻り値 === 
 +Quaternion 
 + 
 +=== サンプル ​===
 <file lua main.lua>​ <file lua main.lua>​
-local cube = vci.assets.GetSubItem("​TestCube"​)+local cube = vci.assets.GetTransform("​TestCube"​)
  
 function onUse(use) function onUse(use)
ライン 191: ライン 215:
 end end
 </​file>​ </​file>​
-\\ + 
-実行結果\\+=== 実行結果 ​===
 <​code>​ <​code>​
 (-0.5, 0.5, 0.5, 0.5) (-0.5, 0.5, 0.5, 0.5)
 </​code>​ </​code>​
-**戻り値:Quaternion**\\ 
-Subitemの回転(Quaternion)を取得できます。\\ 
-[[https://​virtualcast.jp/​blog/​2019/​11/​quaternion/​ | Quaternionとは]] 
-Rotation()の場合、Unity全体が基準の回転(Z+が正面)となり、LocalRotation()の場合はVCIを出現させた時の方向を基準とした回転として扱われます。\\ 
-''​SetRotation(Quaternion.identity)''​ UnityのZ+が正面方向として、姿勢を変更できます。 
  
-===== GetLocalScale() =====+ 
 + 
 +===== GetLocalScale ​===== 
 +**GetLocalScale fun(): Vector3**\\ 
 +Transformの縮尺を取得できます。\\ 
 +\\ 
 +スケールが変更可能なTransformのスケジュールを変える場合、1度GetLocalScale()で取得した値に対して、目的の倍率を掛けた後にSetLocalScale()とする事で「現在の大きさを基準したscaleの変更」をする事ができます。\\ 
 +(SetLocalScale()のみだと、現在の大きさを考慮しないスケールの変更となる) 
 + 
 +=== 戻り値 === 
 +Vector3 
 + 
 +=== サンプル ​===
 <file lua main.lua>​ <file lua main.lua>​
-local cube = vci.assets.GetSubItem("​TestCube"​)+local cube = vci.assets.GetTransform("​TestCube"​)
  
 function onUse(use) function onUse(use)
ライン 211: ライン 242:
 end end
 </​file>​ </​file>​
-\\ + 
-実行結果\\+=== 実行結果 ​===
 <​code>​ <​code>​
 (1.0, 1.0, 1.0, 1.0) (1.0, 1.0, 1.0, 1.0)
 </​code>​ </​code>​
-**戻り値:Vector3**\\ 
-SubItemの縮尺を取得できます。\\ 
-\\ 
-スケールが変更可能なSubItemのスケジュールを変える場合、1度GetLocalScale()で取得した値に対して、目的の倍率を掛けた後にSetLocalScale()とする事で「現在の大きさを基準したscaleの変更」をする事ができます。\\ 
-(SetLocalScale()のみだと、現在の大きさを考慮しないスケールの変更となる) 
  
-===== GetForward() ===== 
-<file lua main.lua>​ 
-local cube = vci.assets.GetSubItem("​TestCube"​) 
  
-function onUse(use+ 
-    local cubeForward ​cube.GetForward() +===== GetVelocity ===== 
-    print(cubeForward+**GetVelocity fun(): Vector3**\\ 
-    ​cube.AddForce(cubeForward * 1000)+Transformの速度をベクトルとして取得します。\\ 
 +サンプルはSubItemをUseした時に、そのVCIの速度を取得し、ログに表示します。 
 + 
 +=== 引数 === 
 +Vector3 
 + 
 + 
 +=== サンプル === 
 +<file lua main.lua> 
 +item = vci.assets.GetTransform("​subitem"​
 +function onGrab() 
 +    ​local velocity = item.GetVelocity(
 +    print(velocity)
 end end
 </​file>​ </​file>​
-\\ 
-実行結果\\ 
-<​code>​ 
-cubeが向いてる方向に飛ぶ。cubeを離した状態でuseする必要がある。 
-</​code>​ 
-**戻り値:Vector3**\\ 
-SubItemが現在向いてる前方向のベクトルを取得できます。\\ 
-(サブアイテムを基準にしたZ軸プラスのベクトル)\\ 
-\\ 
-用途としては…GetForward()でオブジェクトの正面方向のベクトルを取得し、onUngrab()(SubItemを話した時)に正面方向のベクトルを使って AddForce()で力を加えると正面方向に力を加える事ができます。\\ 
-「勢いよく前に飛ばす」等ができる。 
  
-===== GetAngularVelocity() ===== +===== GetAngularVelocity ===== 
-**戻り値:Vector3**\\ +**GetAngularVelocity fun(): ​Vector3**\\ 
-SubItemの角速度を、ラジアン/​秒で表されるベクトルで取得します。\\ +Transformの角速度を、ラジアン/​秒で表されるベクトルで取得します。\\ 
-\\ +サンプルは、SubItemをUseした時に角速度を取得してログに出力します。 
-下記サンプルは、SubItemをUseした時に角速度を取得してログに出力します。\\+ 
 +=== 戻り値 === 
 +Vector3
  
 +=== サンプル ===
 <file lua main.lua>​ <file lua main.lua>​
-local cube = vci.assets.GetSubItem("​TestCube"​)+local cube = vci.assets.GetTransform("​TestCube"​)
  
 function onUse(use) function onUse(use)
ライン 260: ライン 287:
  
  
-===== GetVelocity() ===== 
  
-**引数:Vector3**\\ +===== GetForward / GetRight / GetUp ===== 
-VCI速度をベクトルとして取得ます。\\+**GetForward fun(): ​Vector3**\\ 
 +**GetRight fun(): Vector3**\\ 
 +**GetUp fun(): Vector3**\\ 
 +Transformが現在向いてる前方向のベクトル取得できます。\\ 
 +(Transformを基準にしたZ軸プラスのベクトル)\\
 \\ \\
-下記サンプルはSubItemをUseした時に、そVCIの速度取得し、ログ表示します。\\+用途として…GetForward()でオブジェクトの正面方向のベクトルを取得し、onUngrab()(SubItemをした時正面方向ベクトル使って AddForce()で力を加えると正面方向力を加える事ができます。\\ 
 +「勢いよく前に飛ばす」等ができる。
  
-サンプル\\+=== 戻り値 === 
 +Vector3 
 + 
 +=== サンプル ​===
 <file lua main.lua>​ <file lua main.lua>​
-item = vci.assets.GetSubItem("​subitem"​) +local cube = vci.assets.GetTransform("​subitem"​) 
-function ​onGrab() + 
-    local velocity ​item.GetVelocity() +function ​onUse(use
-    print(velocity)+    local cubeForward ​cube.GetForward() 
 +    print(cubeForward) 
 +    cube.AddForce(cubeForward * 1000)
 end end
 </​file>​ </​file>​
  
-===== SetPosition() / SetLocalPosition() =====+=== 実行結果 ​==
 +<​code>​ 
 +cubeが向いてる方向に飛ぶ。cubeを離した状態でuseする必要がある。 
 +</​code>​ 
 + 
 + 
 +===== GetLocalToWorldMatrix ===== 
 +**GetLocalToWorldMatrix fun(): Matrix4x4**\\ 
 +ローカル座標からワールド座標に変換した時の行列です。 
 + 
 +===== GetAttractable ===== 
 +**GetAttractable fun(): boolean** 
 + 
 +SubItemが引き寄せ可能かどうかを返します。 
 + 
 + 
 + 
 + 
 + 
 + 
 +===== SetPosition ​/ SetLocalPosition ​===== 
 +**SetPosition fun(position: Vector3):**\\ 
 +**SetLocalPosition fun(localPosition:​ Vector3):​**\\ 
 +VCIの現在地をVector3で指定した値に変更します。\\ 
 +Position()の場合、Unityの原点(0,​0,​0)が基準になり、LocalPosition()の場合はVCIを出現させた位置が原点として扱われます。\\ 
 +\\ 
 +位置や回転をSetする場合、Transformに力が加わっているとSet関数で指定した値にした後すぐ力が加わる計算が入るので、意図した結果にならない事があります。\\ 
 +なので、Set関数を呼んだ後にSetVelocity(0,​0,​0) で加わっている力を0にするのがよいです。\\ 
 +\\ 
 +順番はSetPosition()の後にSetVelocity(0,​0,​0)です。\\ 
 +(逆だと力が0になった後でSetPosition()で力が加わる可能性があります) 
 + 
 +=== 引数 === 
 +vector3 
 + 
 +=== サンプル ​===
 <file lua main.lua>​ <file lua main.lua>​
-local cube = vci.assets.GetSubItem("​TestCube"​)+local cube = vci.assets.GetTransform("​TestCube"​)
  
 function onUse(use) function onUse(use)
ライン 289: ライン 360:
 end end
 </​file>​ </​file>​
-\\ + 
-実行結果\\+=== 実行結果 ​===
 <​code>​ <​code>​
 (0.0, 1.0, 0.0) (0.0, 1.0, 0.0)
ライン 296: ライン 367:
 Z軸方向に1移動して止まります。 Z軸方向に1移動して止まります。
 </​code>​ </​code>​
-**引数:vector3**\\ + 
-VCIの現在地Vector3で指定した値に変更します。\\ + 
-Position()の場合、Unityの原点(0,​0,​0)が基準なり、LocalPosition()の場合はVCIを出現させた位置が原点として扱われます。\\+===== SetRotation / SetLocalRotation ===== 
 +**SetRotation fun(rotation:​ Quaternion):​**\\ 
 +**SetLocalRotation fun(localRotation:​ Quaternion):​**\\ 
 +VCIの姿勢(回転)Quternionで指定した値に変更します。\\ 
 +Rotation()の場合、Unity全体が基準の回転(Z+が正面)となり、LocalRotation()の場合はVCIを出現させた時の方向を基準とした回転として扱われます。\\
 \\ \\
-位置や回転をSetする場合、SubItemに力が加わっているとSetメソッドで指定した値にした後すぐ力が加わる計算が入るので、意図した結果にならない事があります。\\ +位置や回転をSetする場合、Transformに力が加わっているとSet関数で指定した値にした後すぐ力が加わる計算が入るので、意図した結果にならない事があります。\\ 
-なので、Setメソッドを呼んだ後にSetVelocity(0,​0,​0) で加わっている力を0にするのがよいです。\\+なので、Set関数を呼んだ後にSetVelocity(0,​0,​0) で加わっている力を0にするのがよいです。\\
 \\ \\
 順番はSetPosition()の後にSetVelocity(0,​0,​0)です。\\ 順番はSetPosition()の後にSetVelocity(0,​0,​0)です。\\
 (逆だと力が0になった後でSetPosition()で力が加わる可能性があります) (逆だと力が0になった後でSetPosition()で力が加わる可能性があります)
  
-===== SetRotation() / SetLocalRotation() ​=====+=== 引数 ​=== 
 +Quaternion 
 + 
 +=== サンプル ​===
 <file lua main.lua>​ <file lua main.lua>​
-local cube = vci.assets.GetSubItem("​TestCube"​) +local cube = vci.assets.GetTransform("​TestCube"​) 
-local subCube = vci.assets.GetSubItem("​TestCube2"​)+local subCube = vci.assets.GetTransform("​TestCube2"​)
  
 function onUse(use) function onUse(use)
ライン 320: ライン 398:
  
 </​file>​ </​file>​
-\\ + 
-実行結果\\+=== 実行結果 ​===
 <​code>​ <​code>​
 subCubeの角度がCubeと等しくなります。 subCubeの角度がCubeと等しくなります。
 </​code>​ </​code>​
-**引数:Quaternion**\\ + 
-VCIの姿勢(回転)Quternionで指定した値に変更します。\\ + 
-Rotation()の場合、Unity全体が基準の回転(Z+が正面)となり、LocalRotation()の場合はVCIを出現させた時の方向を基準とした回転として扱われます。\\+ 
 +===== SetLocalScale ===== 
 +**SetLocalScale fun(localScale:​ Vector3):**\\ 
 +VCIの縮尺Vector3で指定した値に変更します。\\
 \\ \\
-位置や回転Setする場合、SubItemに力が加わっているとSetメソッド指定した値にした後すぐ力が加わる計算が入るので意図した結果にならない事があります。\\ +スケールが変更可能なTransformのスケジュール変える場合、1度GetLocalScale()取得した値に目的倍率掛けた後にSetLocalScale()する「現在大きさを基準したscaleの変更」をる事がでます
-で、Setメソッド呼んだ後にSetVelocity(0,0,0で加わっている力を0にするのがよいす。\\ +
-\\ +
-順番はSetPosition()後にSetVelocity(0,​0,​0)で。\\ +
-(逆だと力0になった後SetPosition()で力が加わる可能性があります+
  
-===== SetLocalScale() =====+ 
 +=== サンプル ​===
 <file lua main.lua>​ <file lua main.lua>​
-local cube = vci.assets.GetSubItem("​TestCube"​)+local cube = vci.assets.GetTransform("​TestCube"​)
  
 function onUse(use) function onUse(use)
ライン 346: ライン 424:
 end end
 </​file>​ </​file>​
-\\ + 
-実行結果\\+=== 実行結果 ​===
 <​code>​ <​code>​
 (4回use) (4回use)
ライン 355: ライン 433:
 (3.4, 3.4, 3.4) (3.4, 3.4, 3.4)
 </​code>​ </​code>​
-**引数:vector3**\\ 
-VCIの縮尺をVector3で指定した値に変更します。\\ 
-\\ 
-スケールが変更可能なSubItemのスケジュールを変える場合、1度GetLocalScale()で取得した値に対して、目的の倍率を掛けた後にSetLocalScale()とする事で「現在の大きさを基準したscaleの変更」をする事ができます。 
  
  
-===== SetVelocity() ===== 
  
-**引数:vector3**\\ +===== SetVelocity ===== 
-VCIの速度を、指定したVector3の値に設定します。\\+**SetVelocity fun(velocity:​ Vector3):**\\ 
 +Transformの速度を、指定したVector3の値に設定します。\\
 \\ \\
-下記サンプルはSubItemを掴んだ時に、+Z方向に移動するように速度を設定します。\\+サンプルはSubItemを離した時に、+Z方向に移動するように速度を設定します。\\
 実行された直後にVelocityの値を持った状態になります。\\ 実行された直後にVelocityの値を持った状態になります。\\
-Vector3.zero をセットすると、物理演算による移動を止める事ができます。\\+Vector3.zero をセットすると、物理演算による移動を止める事ができます。
  
-サンプル\\+=== 引数 === 
 +vector3 
 + 
 +=== サンプル ​===
 <file lua main.lua>​ <file lua main.lua>​
-item = vci.assets.GetSubItem("​subitem"​) +item = vci.assets.GetTransform("​subitem"​) 
-function ​onGrab()+function ​onUngrab()
     local velocity = Vector3.__new(0,​ 0, 10)     local velocity = Vector3.__new(0,​ 0, 10)
     print(velocity)     print(velocity)
ライン 380: ライン 457:
 </​file>​ </​file>​
  
-===== SetAngularVelocity() ===== +===== SetAngularVelocity ===== 
- +**SetAngularVelocity fun(angularVelocity:​ Vector3):**\\ 
-**引数:vector3**\\ +Transformの角速度を、ラジアン/​秒で表されるベクトルで設定します。\\
-SubItemの角速度を、ラジアン/​秒で表されるベクトルで設定します。\\+
 \\ \\
-下記サンプルは、SubItemを掴んだ時に、velocity変数の値を角速度として設定します。\\+サンプルは、SubItemを離した時に、velocity変数の値を角速度として設定します。\\
  
-サンプル\\+=== 引数 === 
 +vector3 
 + 
 +=== サンプル ​===
 <file lua main.lua>​ <file lua main.lua>​
-item = vci.assets.GetSubItem("​subitem"​) +item = vci.assets.GetTransform("​subitem"​) 
-function ​onGrab()+function ​onUngrab()
     local velocity = Vector3.__new(10,​ 0, 0)     local velocity = Vector3.__new(10,​ 0, 0)
     print(velocity)     print(velocity)
ライン 397: ライン 476:
 </​file>​ </​file>​
  
-===== AddForce() ===== 
  
-**引数:vector3**\\ +===== AddForce(force:​ Vec3, forceMode: ForceMode) ===== 
-Vector3の方向に向かって力が加わります。\\ +**AddForce fun(force: Vector3, forceMode: ExportForceMode):​**\\ 
-\\ +[[vci/​script/​reference/​forcemode#​vciforcemode_exportforcemode | ForceMode]]で指定したアルゴリズムを利用し、Vector3の方向に向かって力ます。\\
-下記サンプルは掴んだ時に subitem の名前のオブジェクトがZ方向に移動します。\\ +
-AddForceなので、加速度があるような感じで少しづつ力がわります。\\+
  
-サンプル\\ 
-<file lua main.lua>​ 
-item = vci.assets.GetSubItem("​subitem"​) 
-function onGrab() 
-    local force = Vector3.__new(0,​ 0, 10) 
-    print(force) 
-    item.AddForce(force) 
-end 
-</​file>​ 
  
-===== 装着アイテム操作 ===== 
-VCバージョン:​ 1.9.2a以降 
  
-[[vci:​component:​sdk:​attachable| VCIAttachable]]がアタッチされたSubItemの操作ができます。 +=== forceMode.Forceを利用したプル ===
-AttachToAvatarで装着し、DetachFromAvatarで脱着ます。装着状態はIsAttachedで確認できます。 +
-装着の判定は、VCIAttachableで設定され距離とボー設定に従います。SubItemの所有権がない場合は装着できません。+
  
-サンプル\\ 
 <file lua main.lua>​ <file lua main.lua>​
-local item = vci.assets.GetSubItem("Cube") +item = vci.assets.GetTransform("subitem") 
- +function onUngrab() 
-local dist = item.AttachableDistance +    item.AddForce(Vector3.__new(0, 0, 10), vci.forceMode.Force)
-print("​AttachableDistance:​ "..dist) +
- +
-print("​Bones"​) +
-local bones = item.AttachableHumanBodyBones +
-for key,value in ipairs(bones) do +
-    print(key .. " : " ​.. value)+
 end end
 +</​file>​
  
-function update() 
  
-    if vci.me.GetButtonInput(1) then +=== forceMode.Impulseを利用たサンプル ===
-        print("​装着ます"​) +
-        item.AttachToAvatar() +
-    end+
  
-    if vci.me.GetButtonInput(2) then 
-        print("​脱着します"​) 
-        item.DetachFromAvatar() 
-    end 
  
-end +<file lua main.lua>​ 
- +item = vci.assets.GetTransform("subitem") 
-vci.StartCoroutine( +function ​onUngrab() 
-    coroutine.create( +    ​item.AddForce(Vector3.__new(0, 0, 10), vci.forceMode.Impulse)
-        function() +
-            while true do +
-                local isAttached = item.IsAttached +
-                if isAttached then +
-                    print("装着しています") +
-                else +
-                    print("​装着していません"​) +
-                end +
-                sleep(1) +
-            end +
-        end +
-    ) +
-+
- +
-function ​sleep(sec+
-    ​local t0 = os.time() + sec +
-    while os.time() < t0 do +
-        coroutine.yield() +
-    end+
 end end
 </​file>​ </​file>​
  
-==== サンプルデータ ==== 
  
-手をかざすと自動で付着して、5秒後に離れるVCIです。装着中はエフェクトが再生されます。 
  
-{{:​vci:​script:​reference:​2020041612403245.jpg?​400|}} +===== IsMine ===== 
- +**IsMine boolean**\\ 
-{{ :vci:​script:​reference:​attachsample.zip ​|}}+SubItemの所有者の場合だけ処理したい場合などに使用します。\\ 
 +所有権については [[vci:​script:​reference:​eventfunction:​ownership|所有権とイベント関数の関係]] を参考にしてください。
  
 +=== サンプル ===
 <file lua main.lua>​ <file lua main.lua>​
-local item = vci.assets.GetSubItem("​Ball"​+item = vci.assets.GetTransform('​SubItem'​
-local effect = vci.assets.GetEffekseerEmitter("​Ball"​) +  
- +function ​updateAll() -- 所有権に関係なく全ユーザーが十個する 
-vci.StartCoroutine( +    if item.IsMine ​then -- SubItemの所有者の場合 true 
-    coroutine.create( +        item.SetPosition(Vector3.__new(1, 2, 3))
-        ​function() +
-            while true do +
-                ​if item.IsAttached == false then +
-                    item.AttachToAvatar(+
-                    sleep(0.1) +
-                    if item.IsAttached then +
-                        effect.Play() +
-                        sleep(5) +
-                        item.DetachFromAvatar() +
-                        effect.Stop() +
-                        sleep(1) +
-                    end +
-                end +
-                sleep(0.5) +
-            end +
-        end +
-    ) +
-+
- +
-function sleep(sec) +
-    local t0 = os.time() + sec +
-    while os.time() < t0 do +
-        coroutine.yield()+
     end     end
 end end
 </​file>​ </​file>​
  
-===== SetActive() / ActiveSelf / ActiveInHierarchy =====+=== SetAttractable ​==
 +**SetAttractable fun(value: boolean):**
  
 +SubItemの引き寄せを設定します。
 +
 +===== IsSubItem =====
 +**IsSubItem boolean**\\
 +SubItemであるかどうかを返します。
 +
 +
 +===== SetActive / ActiveSelf / ActiveInHierarchy =====
 +**SetActive fun(isActive:​ boolean):​**\\
 +**_ALL_SetActive fun(isActive:​ boolean):​**\\
 +**ActiveSelf boolean**\\
 +**ActiveInHierarchy boolean**\\
 Transform の有効無効設定は ''​SetActive(isActive:​ bool)''​ で設定することができます。\\ Transform の有効無効設定は ''​SetActive(isActive:​ bool)''​ で設定することができます。\\
 デフォルトの状態は有効です。\\ デフォルトの状態は有効です。\\
ライン 534: ライン 554:
 また ''​ActiveSelf''​ は自分自身の有効無効設定を取得します。 また ''​ActiveSelf''​ は自分自身の有効無効設定を取得します。
  
-ただし Transform が他の Transform の子になっている場合は挙動が複雑になります。+ただし Transform が他の Transform の子になっている場合は挙動が複雑になります。\\
 たとえば Hierarchy 上の親 Transform が無効状態ならば、自身の有効無効に関わらず、無効状態になります。 たとえば Hierarchy 上の親 Transform が無効状態ならば、自身の有効無効に関わらず、無効状態になります。
  
ライン 544: ライン 564:
 </​code>​ </​code>​
  
 +
 +=== サンプル ===
 <file lua main.lua>​ <file lua main.lua>​
 local Parent = vci.assets.GetTransform("​Parent"​) local Parent = vci.assets.GetTransform("​Parent"​)
ライン 556: ライン 578:
 print(Child.ActiveInHierarchy) --> false. Child は実際には無効状態となる. print(Child.ActiveInHierarchy) --> false. Child は実際には無効状態となる.
 </​file>​ </​file>​
 +
 +
  
vci/script/reference/exporttransform.1637151275.txt.gz · 最終更新: 2021/11/17 21:14 by numa

ページ用ツール