vci:script:reference:exporttransform

差分

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

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

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
vci:script:reference:exporttransform [2021/11/17 21:14]
numa
vci:script:reference:exporttransform [2022/09/01 18:27] (現在)
pastatto メソッド→関数
ライン 1: ライン 1:
 +~~NOTOC~~
 ====== ExportTransform ====== ====== ExportTransform ======
  
-ExportTransformクラスはTransformやRigidbodyに干渉する事のできるクラスです。\\ +ExportTransformクラスは、**Subitem**のTransformやRigidbodyに干渉する事のできるクラスです。\\ 
-VCIの移動、回転、縮尺の変更や、力を与えて回転させたり、吹き飛ばしたりする事ができます。\\+VCIの移動、回転、縮尺の変更や、力を与えて回転させたり、吹き飛ばしたりする事ができます。
  
-===== メンバ変数・関数一覧 =====+^ ExportAssets ^^^ 
 +^ 名前 ^ 説明 ^ バージョン 
 +| [[vci/​script/​reference/​exporttransform#​GetTransform | GetTransform]] | VCI内のSubitemを取得 | | 
 +^ ExportTransform ^^^ 
 +^ 名前 ^ 説明 ^ ージョン ^ 
 +| [[vci/​script/​reference/​exporttransform#​GetName]] | Subitemの名前を取得 | | 
 +| [[vci/​script/​reference/​exporttransform#​GetPosition / GetLocalPosition]] | SubitemのPositionを取得| | 
 +| [[vci/​script/​reference/​exporttransform#​GetRotation / GetLocalRotation]] | SubitemのRotationを取得| | 
 +| [[vci/​script/​reference/​exporttransform#​GetLocalScale]] | Subitemのscaleを取得 | | 
 +| [[vci/​script/​reference/​exporttransform#​GetVelocity]] | Subitemの速度をベクトルとして取得 | | 
 +| [[vci/​script/​reference/​exporttransform#​GetAngularVelocity]] | Subitemの角速度をるベクトルとして取得 | | 
 +| [[vci/​script/​reference/​exporttransform#​GetRight]] | Subitemを基準に右方向(X軸)のベクトルを取得 | | 
 +| [[vci/​script/​reference/​exporttransform#​GetUp]] | Subitemを基準に上方向(Y軸)のベクトルを取得 | | 
 +| [[vci/​script/​reference/​exporttransform#​GetForward / GetRight / GetUp]] | Subitemを基準に(X/​Y/​Z軸)のベクトルを取得 | | 
 +| [[vci/​script/​reference/​exporttransform#​GetLocalToWorldMatrix]] | ローカル→ワールド座標に換した時の行列 | | 
 +| [[vci/​script/​reference/​exporttransform#​GetAttractable]] | SubItemが引き寄せ可能かどうか | | 
 +| [[vci/​script/​reference/​exporttransform#​SetPosition / SetLocalPosition]] | SubitemのPositionの値をVec3で変更 | | 
 +| [[vci/​script/​reference/​exporttransform#​SetRotation / SetLocalRotation ]] | SubitemのRotationの値をQuaternionで変更 | | 
 +| [[vci/​script/​reference/​exporttransform#​SetLocalScale]] | Subitemのscaleの値をVec3で変更 | | 
 +| [[vci/​script/​reference/​exporttransform#​SetVelocity ]] | Subitemに加わっている力をVec3で変更 | | 
 +| [[vci/​script/​reference/​exporttransform#​SetAngularVelocity ]] | Subitemに加わってる回転をVec3で変更 | | 
 +| [[vci/​script/​reference/​exporttransform#​AddForce]] | 指定したForceModeで、Subitemに力を付与 | 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]を開くと一覧を確認できます。** 
  
-**表記の省略の為、''​Vector3型''​ は ''​Vec3''​、''​number型''​ は ''​num''​ と表記してあります。**\\ 
-**引数は ''​()''​ の中に、戻り値の型は '':​(セミコロン)''​ の後に表記してあります。**\\ 
  
----- +ExportTransformクラスを使うには ''​Subitem = vci.assets.GetTransform("​Subitem"​) ''​ という風にSubitemを名前で指定してインスタンス化します。\\ 
- +その後、 ''​Subitem.各関数()''​ という風に実行してゆきます。
-^ 名前 ^ 説明 ^ 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: ライン 49:
  
   * transformはバーチャルキャストの機能によって同期します。\\   * transformはバーチャルキャストの機能によって同期します。\\
-  * ''​_ALL_''​ のついたメソッドは同期して実行されます。\\+  * ''​_ALL_''​ のついた関数は同期して実行されます。\\
   * [[vci/​script/​reference/​syncvariable|同期変数]]を使用してVCIの状態を同期させます。\\   * [[vci/​script/​reference/​syncvariable|同期変数]]を使用してVCIの状態を同期させます。\\
  
ライン 69: ライン 55:
 詳細な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): ExportTransform**
  
-サンプル\\+VCI内のSubitemを取得します。\\ 
 +''​vci.assets.GetTransform()''​ の引数にオブジェクト名を入れると、\\ 
 +引数にしたオブジェクトのExportTransformをインスタンス化する事ができます。\\ 
 +インスタンス化したExportTransformの関数を使用する事により、transformの値を変更したり取得する事ができます。\\ 
 + 
 +=== サンプル ​===
 <file lua main.lua>​ <file lua main.lua>​
 --ExportTransform --ExportTransform
ライン 80: ライン 72:
 print(SubItem.ToString()) print(SubItem.ToString())
 </​file>​ </​file>​
-\\ + 
-実行結果\\+=== 実行結果 ​===
 <​code>​ <​code>​
 SubItem SubItem
ライン 87: ライン 79:
 </​code>​ </​code>​
  
-''​vci.assets.GetTransform()''​ の引数にオブジェクト名を入れると、\\ +\\
-引数にしたオブジェクトのExportTransformをインスタンス化する事ができます。\\ +
-インスタンス化したExportTransformのメソッドを使用する事により、transformの値を変更したり取得する事ができます。\\+
  
  
-サンプル2\\+=== サンプル2 ​===
 <file lua main.lua>​ <file lua main.lua>​
 --ExportTransform --ExportTransform
ライン 105: ライン 95:
 print(Item.GetForward()) print(Item.GetForward())
 </​file>​ </​file>​
-\\ + 
-実行結果\\+=== 実行結果 ​=== 
 <​code>​ <​code>​
 (0.0, 1.2, 0.0) (0.0, 1.2, 0.0)
ライン 118: ライン 109:
 ==== 複数の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: ライン 123:
 </​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: ライン 142:
 end end
 </​file>​ </​file>​
-\\ + 
-実行結果\\+=== 実行結果 ​===
 <​code>​ <​code>​
 "​TestCube"​ "​TestCube"​
 </​code>​ </​code>​
-**戻り値:string**\\ 
-VCIのオブジェクト名を取得できます。 
  
-===== GetPosition() ​GetLocalPosition() =====+ 
 + 
 +===== GetPosition ​/ GetLocalPosition ===== 
 +**GetPosition fun(): Vector3**\\ 
 +**GetLocalPosition ​fun(): Vector3**\\ 
 +Subitemの現在地を取得できます。\\ 
 +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: ライン 168:
 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**\\ 
 +Subitemの回転(Quaternion)を取得できます。\\ 
 +[[https://​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: ライン 195:
 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**\\ 
 +SubItemの縮尺を取得できます。\\ 
 +\\ 
 +スケールが変更可能なSubItemのスケジュールを変える場合、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: ライン 222:
 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() =====+ 
 + 
 +===== GetVelocity ===== 
 +**GetVelocity fun(): Vector3**\\ 
 +Subitemの速度をベクトルとして取得します。\\ 
 +サンプルはSubItemをUseした時に、そのVCIの速度を取得し、ログに表示します。 
 + 
 +=== 引数 === 
 +Vector3 
 + 
 + 
 +=== サンプル ​===
 <file lua main.lua>​ <file lua main.lua>​
-local cube = vci.assets.GetSubItem("​TestCube"​)+item = vci.assets.GetTransform("​subitem"​) 
 +function onGrab() 
 +    local velocity = item.GetVelocity() 
 +    print(velocity) 
 +end 
 +</​file>​ 
 + 
 +===== GetAngularVelocity ===== 
 +**GetAngularVelocity fun(): Vector3**\\ 
 +SubItemの角速度を、ラジアン/​秒で表されるベクトルで取得します。\\ 
 +サンプルは、SubItemをUseした時に角速度を取得してログに出力します。 
 + 
 +=== 戻り値 === 
 +Vector3 
 + 
 +=== サンプル === 
 +<file lua main.lua>​ 
 +local cube = vci.assets.GetTransform("​TestCube"​)
  
 function onUse(use) function onUse(use)
-    local cubeForward ​= cube.GetForward() +    local angularVelocity ​= cube.GetAngularVelocity() 
-    print(cubeForward) +    print(angularVelocity)
-    cube.AddForce(cubeForward * 1000)+
 end end
 </​file>​ </​file>​
-\\ + 
-実行結果\\ + 
-<​code>​ + 
-cubeが向いてる方向に飛ぶ。cubeを離した状態でuseする必要がある。 +===== GetForward / GetRight / GetUp ===== 
-</​code>​ +**GetForward fun(): Vector3**\\ 
-**戻り値:Vector3**\\+**GetRight fun(): Vector3**\\ 
 +**GetUp fun(): ​Vector3**\\
 SubItemが現在向いてる前方向のベクトルを取得できます。\\ SubItemが現在向いてる前方向のベクトルを取得できます。\\
 (サブアイテムを基準にしたZ軸プラスのベクトル)\\ (サブアイテムを基準にしたZ軸プラスのベクトル)\\
ライン 244: ライン 278:
 「勢いよく前に飛ばす」等ができる。 「勢いよく前に飛ばす」等ができる。
  
-===== GetAngularVelocity() ===== +=== 戻り値 ​=== 
-**戻り値:Vector3**\\ +Vector3
-SubItemの角速度を、ラジアン/​秒で表されるベクトルで取得します。\\ +
-\\ +
-下記サンプルは、SubItemをUseした時に角速度を取得してログに出力します。\\+
  
 +=== サンプル ===
 <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)
-    local angularVelocity ​= cube.GetAngularVelocity() +    local cubeForward ​= cube.GetForward() 
-    print(angularVelocity)+    print(cubeForward) 
 +    cube.AddForce(cubeForward * 1000)
 end end
 </​file>​ </​file>​
  
 +=== 実行結果 ===
 +<​code>​
 +cubeが向いてる方向に飛ぶ。cubeを離した状態でuseする必要がある。
 +</​code>​
  
-===== GetVelocity() ===== 
  
-**引数:Vector3**\\ +===== GetLocalToWorldMatrix ===== 
-VCIの速度ベクトルとして取得します。\\+**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を出現させた位置が原点として扱われます。\\
 \\ \\
-下記サンプルはSubItemUseした、そのVCIの速度を取得し、ログに表示します。\\+位置や回転Setする場合、SubItemに力が加わっているとSet関数で指定したにした後すぐ力が加わる計算が入るので意図た結果にならない事があります。\\ 
 +なので、Set関数を呼んだ後にSetVelocity(0,​0,​0) で加わっている力を0にするのがよいです。\\ 
 +\\ 
 +順番はSetPosition()の後にSetVelocity(0,​0,​0)です。\\ 
 +(逆だと力が0になった後でSetPosition()で力が加わる可能性があります)
  
-サンプル\\ +=== 引数 === 
-<file lua main.lua>​ +vector3
-item vci.assets.GetSubItem("​subitem"​) +
-function onGrab() +
-    local velocity ​item.GetVelocity() +
-    print(velocity) +
-end +
-</​file>​+
  
-===== SetPosition() / SetLocalPosition() =====+=== サンプル ​===
 <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: ライン 340:
 end end
 </​file>​ </​file>​
-\\ + 
-実行結果\\+=== 実行結果 ​===
 <​code>​ <​code>​
 (0.0, 1.0, 0.0) (0.0, 1.0, 0.0)
ライン 296: ライン 347:
 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する場合、SubItemに力が加わっていると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: ライン 378:
  
 </​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メソッド指定した値にした後すぐ力が加わる計算が入るので、意図した結果にならない事があります。\\ +スケールが変更可能なSubItemのスケジュール変える場合、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: ライン 404:
 end end
 </​file>​ </​file>​
-\\ + 
-実行結果\\+=== 実行結果 ​===
 <​code>​ <​code>​
 (4回use) (4回use)
ライン 355: ライン 413:
 (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 ===== 
 +**SetVelocity fun(velocity:​ Vector3):**\\
 VCIの速度を、指定したVector3の値に設定します。\\ VCIの速度を、指定した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 onGrab()
     local velocity = Vector3.__new(0,​ 0, 10)     local velocity = Vector3.__new(0,​ 0, 10)
ライン 380: ライン 437:
 </​file>​ </​file>​
  
-===== SetAngularVelocity() ===== +===== SetAngularVelocity ===== 
- +**SetAngularVelocity fun(angularVelocity:​ Vector3):**\\
-**引数:vector3**\\+
 SubItemの角速度を、ラジアン/​秒で表されるベクトルで設定します。\\ 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 onGrab()
     local velocity = Vector3.__new(10,​ 0, 0)     local velocity = Vector3.__new(10,​ 0, 0)
ライン 397: ライン 456:
 </​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 onGrab() 
-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 ​onGrab() 
-    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: ライン 534:
 また ''​ActiveSelf''​ は自分自身の有効無効設定を取得します。 また ''​ActiveSelf''​ は自分自身の有効無効設定を取得します。
  
-ただし Transform が他の Transform の子になっている場合は挙動が複雑になります。+ただし Transform が他の Transform の子になっている場合は挙動が複雑になります。\\
 たとえば Hierarchy 上の親 Transform が無効状態ならば、自身の有効無効に関わらず、無効状態になります。 たとえば Hierarchy 上の親 Transform が無効状態ならば、自身の有効無効に関わらず、無効状態になります。
  
ライン 544: ライン 544:
 </​code>​ </​code>​
  
 +
 +=== サンプル ===
 <file lua main.lua>​ <file lua main.lua>​
 local Parent = vci.assets.GetTransform("​Parent"​) local Parent = vci.assets.GetTransform("​Parent"​)
ライン 556: ライン 558:
 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

ページ用ツール