目次

ボールが箱の中に入ったときや出たときに色を変える

onTriggerEnterを使用した、アイテムがコライダーを通過したときに色が変化するサンプルです。

サンプルデータ

https://virtualcast.jp/products/3f4a199e2408e4447ac65547a040f882f5ed085ec4ec1eb1416ed519aa2cf43e

triggerenterexit_vci.zip

手順

SubItemにCollider(Trigger)が接触したときに処理を実行するには「onTriggerEnter」を、
Collider(Trigger)が離れたときに処理を実行するには「onTriggerExit」を使用します。

1. 新しくGameObjectを作成し、その中にCube、Sphere、Planeを入れ子にします。

GameObjectの名前は「TriggerEnterExit_VCI」としていますが、任意の名前でも可です。
その他は以下のように設定します。

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スクリプト

main.lua
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