====== 棒で突くと勢いよく飛ぶビリヤードの玉を作る ====== [[https://developer.virtualcast.jp/vci-docs/api/events/onCollisionEnter.html | onCollisionEnter]]を使用した、アイテムをぶつけた時に特定の力で別アイテムを動作させるサンプルです。 === サンプルデータ === https://virtualcast.jp/products/3ece71b9b4213bf2e6a3f6552b6653466e764774ab635bc86678192654a4d1b9 {{ :vci:sample:oncollision:チュートリアルビリヤード.zip |}} ===== 手順 ===== オブジェクトが衝突したときの処理になるので「**onCollisionEnter**」を使用します。 各オブジェクトの設定は次のようになります。\\ SubItemのGroupIDは0以外で同じ数字にしておきます。\\ (同じ数字のSubItemはオーナー権が一致し、正しく物理演算が行われる) {{vci:sample:oncollision:tutorial_bili1.png?400|}} {{vci:sample:oncollision:tutorial_bili2.png?400|}} {{vci:sample:oncollision:tutorial_bili3.png?400|}} GameObjectの「VCI Object」コンポーネントのScriptsのSizeを**1**に指定し、\\ Nameに「main.lua」を記入、Sourceに以下スクリプトを記入します。 AddForce(Vector3)はオブジェクトにVector3の力を加えます。 GetUp()でオブジェクトの上向き(ローカルY方向)単位ベクトルを得ることができます。\\ 今回の場合はビリヤードのキューの先端の方向がy方向になっています。 ===== VCIスクリプト ===== function onCollisionEnter(item, hit) if (item=="bili_ball" and hit=="bili_q") or (item=="bili_q" and hit=="bili_ball") then local bili_ball = vci.assets.GetTransform("bili_ball") local bili_q = vci.assets.GetTransform("bili_q") bili_ball.AddForce(1000 * bili_q.GetUp()) end end