【Unity / PlayMaker】コントローラーがオブジェクトに触れたとき、イベントを発生させる方法 (TRIGGER EVENT)

この記事では、コントローラーがオブジェクトに触れた際に、イベントを発生させる方法を説明します。

コントローラーがオブジェクトに触れた際に、オブジェクトの色が変化したり、回転したり、大きさが変わるなど、様々なインタラクションを引き起こすことができます。

また、コントローラーがオブジェクトに触れた際に使うイベントは、大きく分けて、「TRIGGER EVENT」と「COLLISION EVNET」という2つあります。

今回は、TRIGGER EVENTを使ってイベントを発生させる方法を説明します。

TRIGGER EVENT

COLLISION EVENT編はこちら

事前準備

UnityのプラグインであるPlayMakerをあらかじめインストールしておきましょう。

はじめてPlayMakerを使用するひとは、あらかじめ以下の記事を一読することで、理解を深めることができます。

概要

Unityでは、コントローラーとオブジェクトが当たった際にイベントを発生させてインタラクションが引き起こされます。
これをPlayMakerによって実装します。

オブジェクトと当たった際によって引き起こるイベントは2種類あります。

  1. TRIGGER EVENT :「触れたこと」によって引き起こされるイベント
    コントローラーと3Dモデルが重なり合った情報によってインタラクションが引き起こされます。
  2. 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」が発動します。

では実際に作って見ましょう。その前に流れを説明します。

  1. 3Dモデルの準備
  2. 衝突させる3Dモデルに「Collider」を付与する
  3. PlayMakerで3Dモデルにインタラクションの設定をする

3Dモデルの準備

インタラクションを実装する3Dモデルを用意しましょう。今回はCubeを使用します。

Hierarchy内で右クリックして 3D ObjectのCubeを選択します。

Cubeを作る

今回、インタラクションを実装する3Dモデルとなります。このままではコントローラーをあててもすり抜けてしまいます。

そこで、Cubeに当たり判定をつけるために、Colliderを付与しましょう。

衝突させる3Dモデルに「Collider」を付与する

【 Collider 】

Colliderは衝突判定を計算するコンポーネントです。対象の3Dモデルに付与することで、他の3Dモデルに触れたときに「衝突した」という情報が取得されます。

 

Collider

通常、Unityのシーン上で作ったCubeやSphereには初期状態で付与されていますが、インポートした3Dモデルには付与する必要があります。

付与する場合には、Inspecter内の、「Add Component」から付与することができます。

 

付与するモデルの形に合わせてColliderを選択しましょう。

Colliderを付与することで、3Dモデルに当たり判定が取得されるようになりました。
これでインタラクションを実装する3Dモデルの準備ができました。

次は、PlayMakerを利用して、インタラクションの設定をしていきます。

PlayMakerで3Dモデルにインタラクションの設定をする

今回はコントローラーが3Dモデル(Cube)に当たったことで、TRIGGER EVENTが発動し、色が変化するインタラクションを実装します。

あらかじめ、色を変化させるためのMaterialを作ります。

Project上で右クリックをし、「Create > Material」を選択し、Materialを作ります。

Materialを作る

 

Materialを作りましたら、名前をREDにしましょう。
名前を変更し、Inspector内でカラーを変更します。

色を変更

これでMaterialの準備ができました。
次にインタラクションの準備をPlayMakerで行います。

 

Cubeを選択した状態で、PlayMaker Editor上で右クリックをし、「Add FSM」を選択します。

Add FSM

 

State1が追加されます。State1を「Waiting for Trigger」と名前を変更しましょう。

名前を変更

 

Waiting for TriggerのStateを選択した状態で、右クリックをして、Add Transition、System Eventsの順番で選択して、TRIGGER ENTERをクリックします。

TRIGGER ENTERを設定

 

次に、PlayMaker Editor上で右クリックをし、Add Stateを選択します。このStateに色が変化するアクションを設定します。

Add State

 

State1が追加されました。名前を「Change Color」に変更しましょう。

名前を変更

 

Change Colorのアクションを設定します。Change ColorのStateを選択した状態で、右のStateタブ右下の「Action Browser」を選択して、ブラウザを開きましょう。

Action Browserを開く

 

Action Browserから「Set Material」を選択し、右下の「Add Action To State」を選択し、アクションを追加します。

Set Materialを追加

 

Set Materialのアクションの設定をします。
Set Material内の「Material」を、あらかじめ用意した「RED」Materialをセットします。

Materialをセット

 

最後に、「Waiting For Trigger」のStateと「Change Color」のStateを繋げましょう。

Stateをつなげる

これでCubeのTrigger Eventによるインタラクションの設定が出来ました。

STYLYにアップロードする方法

実際にSTYLYにアップロードしましょう。

詳しいアップロード方法はこちらを参照してください

STYLYにアップロードした挙動がこちらです。
コントローラーがCUBEに触れた際に、TRIGGER ENTERが発生して、CUBEの色を赤に変更するアクションが実行されました。

TRIGGER EVENT

オリジナリティ溢れる作品を制作してみましょう!