この記事では、コントローラーがオブジェクトに触れた際に、イベントを発生させる方法を説明します。
コントローラーがオブジェクトに触れた際に、オブジェクトの色が変化したり、回転したり、大きさが変わるなど、様々なインタラクションを引き起こすことができます。
また、コントローラーがオブジェクトに触れた際に使うイベントは、大きく分けて、「TRIGGER EVENT」と「COLLISION EVNET」という2つあります。
今回は、TRIGGER EVENTを使ってイベントを発生させる方法を説明します。
COLLISION EVENT編はこちら
事前準備
UnityのプラグインであるPlayMakerをあらかじめインストールしておきましょう。
はじめてPlayMakerを使用するひとは、あらかじめ以下の記事を一読することで、理解を深めることができます。
概要
Unityでは、コントローラーとオブジェクトが当たった際にイベントを発生させてインタラクションが引き起こされます。
これをPlayMakerによって実装します。
オブジェクトと当たった際によって引き起こるイベントは2種類あります。
- TRIGGER EVENT :「触れたこと」によって引き起こされるイベント
コントローラーと3Dモデルが重なり合った情報によってインタラクションが引き起こされます。 - COLLISION EVENT:「衝突」によって引き起こされるイベント
コントローラーとの衝突判定の物理作用の情報によってインタラクションが引き起こされます。
TRIGGER EVENTについて
TRIGGER EVENTを発生させる条件は以下です。
- 両方のGameObjectにColliderコンポーネントが含まれている必要がある
- Collider.isTriggerを有効にし、Rigidbodyを含める必要があります。
- 両方のGameObjectでCollider.isTriggerが有効になっている場合、衝突は発生しない。
- 両方のGameObjectにRigidbodyコンポーネントがない場合も同様です。
TRIGGER EVENTを発生させる条件参照元
PlayMaker Events
Unity MonoBehaviour.OnTriggerEnter(Collider)
STYLYでTRIGGER EVENTを使う条件
STYLYでTRIGGER EVENTを使うためには、オブジェクトに以下の設定してください。
Colliderを付与する
これだけで、コントローラーがオブジェクトに触れた際、PlayMaker上の「TRIGGER ENTER」が発動します。
では実際に作って見ましょう。その前に流れを説明します。
- 3Dモデルの準備
- 衝突させる3Dモデルに「Collider」を付与する
- PlayMakerで3Dモデルにインタラクションの設定をする
3Dモデルの準備
インタラクションを実装する3Dモデルを用意しましょう。今回はCubeを使用します。
Hierarchy内で右クリックして 3D ObjectのCubeを選択します。
今回、インタラクションを実装する3Dモデルとなります。このままではコントローラーをあててもすり抜けてしまいます。
そこで、Cubeに当たり判定をつけるために、Colliderを付与しましょう。
衝突させる3Dモデルに「Collider」を付与する
【 Collider 】
Colliderは衝突判定を計算するコンポーネントです。対象の3Dモデルに付与することで、他の3Dモデルに触れたときに「衝突した」という情報が取得されます。
通常、Unityのシーン上で作ったCubeやSphereには初期状態で付与されていますが、インポートした3Dモデルには付与する必要があります。
付与する場合には、Inspecter内の、「Add Component」から付与することができます。
Colliderを付与することで、3Dモデルに当たり判定が取得されるようになりました。
これでインタラクションを実装する3Dモデルの準備ができました。
次は、PlayMakerを利用して、インタラクションの設定をしていきます。
PlayMakerで3Dモデルにインタラクションの設定をする
今回はコントローラーが3Dモデル(Cube)に当たったことで、TRIGGER EVENTが発動し、色が変化するインタラクションを実装します。
あらかじめ、色を変化させるためのMaterialを作ります。
Project上で右クリックをし、「Create > Material」を選択し、Materialを作ります。
Materialを作りましたら、名前をREDにしましょう。
名前を変更し、Inspector内でカラーを変更します。
これでMaterialの準備ができました。
次にインタラクションの準備をPlayMakerで行います。
Cubeを選択した状態で、PlayMaker Editor上で右クリックをし、「Add FSM」を選択します。
State1が追加されます。State1を「Waiting for Trigger」と名前を変更しましょう。
Waiting for TriggerのStateを選択した状態で、右クリックをして、Add Transition、System Eventsの順番で選択して、TRIGGER ENTERをクリックします。
次に、PlayMaker Editor上で右クリックをし、Add Stateを選択します。このStateに色が変化するアクションを設定します。
State1が追加されました。名前を「Change Color」に変更しましょう。
Change Colorのアクションを設定します。Change ColorのStateを選択した状態で、右のStateタブ右下の「Action Browser」を選択して、ブラウザを開きましょう。
Action Browserから「Set Material」を選択し、右下の「Add Action To State」を選択し、アクションを追加します。
Set Materialのアクションの設定をします。
Set Material内の「Material」を、あらかじめ用意した「RED」Materialをセットします。
最後に、「Waiting For Trigger」のStateと「Change Color」のStateを繋げましょう。
これでCubeのTrigger Eventによるインタラクションの設定が出来ました。
STYLYにアップロードする方法
実際にSTYLYにアップロードしましょう。
詳しいアップロード方法はこちらを参照してください
STYLYにアップロードした挙動がこちらです。
コントローラーがCUBEに触れた際に、TRIGGER ENTERが発生して、CUBEの色を赤に変更するアクションが実行されました。
オリジナリティ溢れる作品を制作してみましょう!