このページは過去の情報となります。
新しいスクリプトリファレンスはこちらになります。
アバター情報を取得します。
ExportStudioのGetOwner
, GetAvatars
から取得できます。
名前 | 説明 | バージョン |
---|---|---|
GetName | ユーザー名を取得 | |
GetId | ユーザーIDを取得 | |
IsOwner | VCIの所有者かどうか | |
GetLocalPosition / GetPosition | 足元の座標を取得 ※1 ※2 | |
GetLocalRotation / GetRotation | 回転を取得 ※1 | |
GetLocalScale | 縮尺を取得 ※1 | |
GetRight / GetUp / GetForward | (X/Y/Z軸)のベクトルを取得 ※1 | |
GetLocalToWorldMatrix | ローカル→ワールド座標に変換した行列を取得 ※1 | |
GetBoneTransform | ボーン情報を取得 ※1 |
※1
アバター情報の読込中や、アバター切替時にnilが返されることがあるので、使用する際はnilチェックを入れてください。
※2
ルームではHipボーンの位置を取得します
GetBoneTransform
, GetName
を実行して詳細な情報を取り出す。vci.studio.GetAvatars()
でアバターを取得した際のIndex番号に割り振られているプレイヤーはクライアント毎に異なります。-- VCIの持ち主(VCIを出した人)の情報を取得する local owner = vci.studio.GetOwner() -- VCIの持ち主の名前を表示 print(owner.GetName()) -- boneのnilチェック local hipsBone = owner.GetBoneTransform("Hips") if hipsBone then -- Hipsのpositionを表示する print(hipsBone.position) -- Hipsのrotationを表示する print(hipsBone.rotation) end
-- スタジオ内に居るプレイヤーの一覧を表示する local _avatars = vci.studio.GetAvatars() for i = 1, #_avatars do print("avatars["..tostring(i).."]: ".._avatars[i].GetName()) end
-- VCIの持ち主(VCIを出した人)の情報 local _ownerAvater -- 初期化 (VCIの持ち主のみ実行) if vci.assets.IsMine then _ownerAvater = vci.studio.GetOwner() print("ホスト : ".._ownerAvater.GetName()) end -- リモートの確認 if vci.assets.IsMine == false then print("あなたはVCIの持ち主ではありません") end function updateAll() if vci.assets.IsMine then print("VCIの持ち主のみが実行する処理") end end function onUse(switch) -- 各クライアントでonUseFireOnce()を実行する vci.message.Emit("onUseFireOnce", tostring(switch)) end function onUseFireOnce(sender, name, message) print("message : "..tostring(message)) -- VCIの持ち主のみ実行 if vci.assets.IsMine then -- ここで主に部屋主のアバター情報などを取得 print("VCIの持ち主のみ実行する処理") end -- リモートで確認 if vci.assets.IsMine == false then print("VCIの持ち主以外が実行する処理") end end -- Emit "onUseFireOnce" で onUseFireOnce()を実行する vci.message.On("onUseFireOnce", onUseFireOnce)
_ownerAvaterに関係する処理をVCIの持ち主のクライアントのみで実行する場合のサンプルです。
VCIの持ち主が代表して実行し、リモートのクライアントからは_ownerAvaterにアクセスしないイメージです。
同期変数やメッセージを使って状態を同期させます。
GetName fun(): string
VCI所有者のユーザー名を表示します。
function onUse(use) local owner = vci.studio.GetOwner() print(owner.GetName()) end
"バーチャルキャストちゃん"
GetId fun(): string
VCI所有者のユーザーIDを取得します。
スタジオ内のみで有効な値です。スタジオを抜けるとIDが変わります。
function onUse(use) local owner = vci.studio.GetOwner() print(owner.GetId()) end
""79325077""
IsOwner fun(): bool
VCIの所有者かどうかを示す値を返します。
function onUse(use) local owner = vci.studio.GetOwner() print(owner.IsOwner()) end
true
GetLocalPosition fun(): Vector3
GetPosition fun(): Vector3
それぞれVCI所有者の足元のローカル、ワールド座標を取得します。
function onUse(use) local owner = vci.studio.GetOwner() print(owner.GetLocalPosition()) print(owner.GetPosition()) end
(1.8, 0.0 , 1.7) (1.8, 0.0 , 1.7)
GetLocalRotation fun(): Quaternion
GetRotation fun(): Quaternion
それぞれVCI所有者のローカル、ワールド回転を取得します。
function onUse(use) local owner = vci.studio.GetOwner() print(owner.GetLocalRotation()) print(owner.GetRotation()) end
(0.0, 0.4, 0.0, 0.9) (0.0, 0.4, 0.0, 0.9)
GetLocalScale fun(): Vector3
VCI所有者の縮尺を取得します。
function onUse(use) local owner = vci.studio.GetOwner() print(owner.GetLocalScale()) end
(1.0, 1.0, 1.0)
GetRight fun(): Vector3
GetUp fun(): Vector3
GetForward fun(): Vector3
GetRight()は右方向(+X)のベクトル、owner.GetUp()は上方向(+Y)ベクトル、owner.GetForward()は正面(+Z)ベクトルを取得します。
サンプルはそれぞれVCI所有者のベクトルを取得しています。
function onUse(use) local owner = vci.studio.GetOwner() print(owner.GetRight()) print(owner.GetUp()) print(owner.GetForward()) end
(1.0, 0.0, -0.3) (0.0, 1.0, 0.1) (0.3, -0.1, 1.0)
GetLocalToWorldMatrix fun(): Matrix4x4
3つのベクトルと現在の座標を取得できる。
function onUse(use) local owner = vci.studio.GetOwner() print(owner.GetRight()) print(owner.GetUp()) print(owner.GetForward()) print(owner.GetLocalPosition()) print(owner.GetLocalToWorldMatrix()) end
(0.7, 0.0, 0.7) (0.0, 1.0, 0.0) (-0.7, 0.0, 0.7) (2.0, 0.0, 2.3) 0.68498 -0.02538 -0.72812 1.96983 0.00523 0.99954 -0.02992 0.00000 0.72855 0.01669 0.68479 2.26828 0.00000 0.00000 0.00000 1.00000
GetBoneTransformは、UnityHumanoidAvaterのHumanBodyBonesの変数名から、ボーン情報を得るための関数です。
無効なボーン名や、対応していないボーンを指定した場合は、nilが返ります。
UnityHumanoidAvaterに関しては、こちらをご覧ください。
-- VCI所有者情報を取得する。 local owner = vci.studio.GetOwner() ---- サブアイテムを取得する local subItem = vci.assets.GetTransform("SubItem1") -- 右手の位置にサブアイテムを動かす。 local rightHand = owner.GetBoneTransform("RightHand") if rightHand then subItem.SetPosition(rightHand.position) subItem.SetRotation(rightHand.rotation) end
ボーン情報(Table型)
キー | 型 | 説明 |
---|---|---|
position | Vector3 | ボーンのワールド座標 |
rotation | Quaternion | ボーンのワールド回転 |