====== 物体を常に回転させる(rotationの変更) ====== [[https://developer.virtualcast.jp/vci-docs/api/classes/ExportTransform/SetLocalRotation.html|SetLocalRotation]] を使用した角度変更のサンプルです。 === サンプルデータ === https://virtualcast.jp/products/ca1869495cfba094ed5b492511c2a7115893617c33ed655f0d103fce8f448c98 {{ :vci:sample:transform:rotation_vci.zip |}} ===== コンポーネント設定 ===== 各コンポーネントの設定は以下を参照してください。 {{vci:sample:transform:update_2_1.png?800|}} ===== 手順 ===== VCIが表示されている間、常に処理を実行するには「**update**」を使用します。 回転運動については、**Quaternion.AngleAxis**を使って指定した軸の周りを回転させます。\\ 今回はY軸の周りを回転させるように「**GetUp()**」関数を使います。 参考:Quaternion.AngleAxis\\ [[https://docs.unity3d.com/ja/2017.4/ScriptReference/Quaternion.AngleAxis.html]] 1. 新しくGameObjectを作成し、その中にCubeを子にします。\\ GameObjectの名前は「Rotation_VCI」としていますが、任意の名前でも可です。\\ Cubeの名前は「**Cube**」と指定します。Cubeは地面に貫通しないようY座標を1.0に指定します。 2. GameObjectに「**VCI Object**」コンポーネントをアタッチし、\\ Cubeに「**VCI SubItem**」コンポーネントをアタッチします。\\ この時、「Rigitbody」コンポーネントもアタッチされます。\\ 重力を使用しないため、**「Use Gravity」をOFF、「Is Kinematic」をON**にします。 3. GameObjectの「VCI Object」コンポーネントのScriptsのSizeを**1**に指定し、\\ Nameに「main.lua」を記入、Sourceに以下スクリプトを記入します。 ===== VCIスクリプト ===== local cube = vci.assets.GetTransform("Cube") --SubItem名をstring型で挿入します local rotSpeed = 1 --回転速度 function updateAll() -- 所有権にかかわらず全ユーザーで呼び出されます if cube.IsMine then -- 所有者が代表して移動させます cube.SetLocalRotation(Quaternion.AngleAxis( rotSpeed, cube.GetUp() ) * cube.GetLocalRotation()) end end