#概要
https://qiita.com/120byte/private/b9e5a50db09bcdf9c9c0
があんまりだったので、もう一つ案を考えてみました。
#動作
— 120 (@120byte) December 1, 2019
local current = ""
function updateAll()
SetTransform("CubeA", "Cube1")
SetTransform("CubeB", "Cube2")
SetTransform("CubeC", "Cube3")
end
function SetTransform(targetName, markerName)
local target = vci.assets.GetSubItem(targetName)
local marker = vci.assets.GetSubItem(markerName)
if current == markerName then
target.SetPosition(marker.GetPosition())
target.SetRotation(marker.GetRotation())
else
marker.SetPosition(target.GetPosition())
marker.SetRotation(target.GetRotation())
end
end
function onGrab(target)
current = target
end
function onUngrab(target)
current = ""
end
#捕捉
親子関係を持つオブジェクトと、掴んで操作するためのオブジェクトを分けて作ります。親子関係を持つオブジェクトはVCISubItemを付けていません。掴んで操作するオブジェクトを掴んでいるかどうかで、親子オブジェクトと掴みオブジェクト間の位置と回転の取得と設定を入れ替えます。
#蛇足
大きさはlocalしかないため一癖あり、用途的にも思い浮かばなかったので諦めてしまいました。(親子関係の大きさから計算すれば合うかな……?