ユーザ用ツール

サイト用ツール


vci:sample:onuse:no1

グリップボタンを押したときに位置や回転をリセットする


※この記事は「UniVCI-0.15」時点のものです。

サンプルデータ:https://seed.online/items/b436ef0c623b8a258d8294ec7fa106001ec0a96336615781cd1c7b6ad8330125

グリップボタンを押したときに処理を実行するには「onUse」を使用します。

ここでは「VCI Object」に、移動できる「VCI SubItem」が複数ある場合、
指定の「VCI SubItem」に対してグリップボタンを押すと初期位置へ戻る処理を作成します。
サンプルは平たいボックスの上に球が陳列しており、
ボックスを掴んで移動させてもグリップボタンを押すと、
球が元の位置に戻るようになっています。

1. 新しくGameObjectを作成し、その中にCubeを1個、Sphereを5個入れ子にします。
(作例ではSphereが5個ですが、いくつでも構いません)

GameObjectの名前は「ResetSample_VCI」としていますが、任意の名前でも可です。
Cubeの名前は「Cube」と指定し、Sphereの名前は「Ball1からBall5」と指定します。
Cubeは地面に貫通しないようY座標を1.0に指定し、Sphereは更に1.5に指定します。
またCubeのスケールを平たくし、SphereのスケールはCubeの上に収まるように調整します。

2. GameObjectに「VCI Object」コンポーネントをアタッチし、
CubeとSphereに「VCI SubItem」コンポーネントをアタッチします。
この時、「Rigitbody」コンポーネントもアタッチされます。
Cubeは重力を使用しないため、「Rididbody」の「Use Gravity」をOFF、「Is Kinematic」をONにし、
なおかつ掴んで移動できるようにするため「VCI SubItem」の「Grabbable」をONにします。
Sphereはアタッチ後のパラメータそのままにします。

3. 更にどのユーザーがグリップボタンを押しても、きちんと位置が初期位置へ戻るように、
「VCI SubItem」の「GroupId」を1に変更します。
こうすることで「GroupId」が1のSubItemを一括で制御することができるようになります。

※詳しくは「VCIコンポーネントの詳細/GroupID」を参照してください。

4. GameObjectの「VCI Object」コンポーネントのScriptsのSizeを1に指定し、
Nameに「main.lua」を記入、Sourceに以下スクリプトを記入します。

main.lua
local Cube = vci.assets.GetSubItem("Cube")
local Balls = {...}
local Balloffsets = {...}
for i=1,5 do
    Balls[i] = vci.assets.GetSubItem("Ball"..tostring(i))
    Balloffsets[i] = Balls[i].GetLocalPosition()
end
 
function onUse(use)
    if use == "Cube" then
        local Cube_localPos = Cube.GetLocalPosition()
        local Cube_localRot = Cube.GetLocalRotation()
        local rotationAngles = Cube_localRot.eulerAngles
        --玉の修正
        for i=1,5 do
            local relativeDirection = Balloffsets[i]
            local goalPosition = Quaternion.Euler(0, rotationAngles.y, 0) * relativeDirection
            Balls[i].SetLocalPosition( goalPosition + Cube_localPos )
            Balls[i].SetVelocity(Vector3.zero)--rigitbodyにかかる速度をゼロに
            Balls[i].SetAngularVelocity(Vector3.zero)--rigitbodyにかかる回転をゼロに
        end
    end
end
vci/sample/onuse/no1.txt · 最終更新: 2019/05/27 20:36 by navana

ページ用ツール