====== ボールが箱の中に入ったときや出たときに色を変える ====== [[https://developer.virtualcast.jp/vci-docs/api/events/onTriggerEnter.html | onTriggerEnter]]を使用した、アイテムがコライダーを通過したときに色が変化するサンプルです。 === サンプルデータ === https://virtualcast.jp/products/3f4a199e2408e4447ac65547a040f882f5ed085ec4ec1eb1416ed519aa2cf43e {{ :vci:sample:material:triggerenterexit_vci.zip |}} ===== 手順 ===== SubItemにCollider(Trigger)が接触したときに処理を実行するには「**onTriggerEnter**」を、\\ Collider(Trigger)が離れたときに処理を実行するには「**onTriggerExit**」を使用します。 1. 新しくGameObjectを作成し、その中にCube、Sphere、Planeを入れ子にします。\\ \\ GameObjectの名前は「TriggerEnterExit_VCI」としていますが、任意の名前でも可です。\\ その他は以下のように設定します。 * Cube(箱): 「**Cube**」 Y座標を1.0 * Sphere(ボール): 「**Ball**」 Y座標を2.0 * Plane(地面): 「**Plane**」 Y座標を0.0 2. Cubeの色を変更するため「**TriggerMaterial**」Materialファイルを新規作成します。\\ 作成したTriggerMaterialを「**Cube**」のMaterialとして設定します。 3. GameObjectに「**VCI Object**」コンポーネントをアタッチし、\\ Cube、Ball、Planeに「**VCI SubItem**」コンポーネントをアタッチします。\\ この時、「Rigitbody」コンポーネントもアタッチされます。\\ CubeとPlaneは重力を使用しないため、**「Use Gravity」をOFF、「Is Kinematic」をON**にします。\\ Ballは物理挙動させるため、**「Use Gravity」をON、「Is Kinematic」をOFF**にします。 4. GameObjectの「VCI Object」コンポーネントのScriptsのSizeを**1**に指定し、\\ Nameに「main.lua」を記入、Sourceに以下スクリプトを記入します。 ===== VCIスクリプト ===== local green = Color.__new(0,1,0,0.5) local red = Color.__new(1,0,0,0.5) function onTriggerEnter(item, hit) if item == "Ball" and hit == "Cube" then vci.assets.material._ALL_SetColor("TriggerMaterial", red) end end function onTriggerExit(item, hit) if item == "Ball" and hit == "Cube" then vci.assets.material._ALL_SetColor("TriggerMaterial", green) end end