【Unity/Playmaker】コントローラーをオブジェクトに触れた状態で、ボタン入力してイベントを発生させる方法

この記事では、Playmakerを利用して、コントローラーを使ったインタラクションの紹介をします。

今回は、コントローラーがオブジェクトに触れた状態で、ボタンを入力するとイベントが発生する方法を説明します。

今回の記事では、最終的に以下のようなインタラクションが実装できます。

オブジェクトにコントローラーを触れてから、トリガーボタンを押すとイベントが発生する

オブジェクトにコントローラーを触れてから、トリガーボタンを押すとイベントが発生する

事前準備

Playmakerのダウンロードはこちらから

 

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

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

インストールができたら、Playmaker Editorを開き、画面上に格納しておきます。

 

Playmaker Editorを格納

概要

コントローラーがオブジェクトに触れた上でボタンを入力すると、イベントが発生する方法の実装をします。

Playmakerで実装する流れは以下です。

  1. インタラクションを実装する3Dモデルをつくる
  2. インタラクションの設定(TRIGGER EVENT / Global_TriggerPressDown_R(L))

インタラクションを実装する3Dモデルをつくる

インタラクションを実装する3Dモデルをつくります

Hierarchy内で右クリックをし、CreateからCubeをつくります。

Cubeを作る

今回のインタラクションでは、コントローラーが、Cubeに触れた情報を取得させたいので「TRIGGER EVENT」を使用します。

TRIGGER EVENTは「触れたこと」によって引き起こされるイベントです。

TRIGGER EVENTについての詳細

インタラクションを実装する3Dモデルの準備手順はこちら

オブジェクトに以下設定をしてください

  • Colliderを付与する
  • Colliderno

インタラクションの設定(TRIGGER ENTER / Global_TriggerPressDown_R(L))

Cubeを選択した状態で、Playmaker Editor上で、右クリックをし、Add FSMを選択しましょう。

Add FSM

 


State1が追加されます。State1の名前を Waiting for Trigger に変更します。

名前を変更

 

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

TRIGGER ENTER

この「Waiting for Trigger」のStateでコントローラーが3Dモデルに触れた情報を取得します。

次に、コントローラーが触れたうえで、ボタンを入力した情報を取得するインタラクションを設定します。
Playmaker Editor上で右クリックをし「Add State」を追加しましょう。

名前を Waiting for Button に変更します。

Add State

 

このWaiting for ButtonにGlobal_TriggerPressDown_Rのイベントを付与します。最初に、右のEventsタブの下部にある Add EventにGlobal_TriggerPressDown_R / Global_TriggerPressDown_Lを入力し、イベントを追加しましょう。

この Global_TriggerPressDown_R/L がコントローラーのトリガーボタンの情報を取得するイベントになります。

Global_TriggerPressDown_Rの追加

 

Waiting for Buttonを選択した状態で、右クリックをしてAdd TransitionのGlobal_TriggerPressDown_Rを選択しましょう。

Transitionを追加

 

Waiting for TriggerとWaiting for Buttonを矢印でつなぎ、Transitionを設定する。

Transitionの設定

 

これに加えて、もう1つStateを追加しましょう。Playmaker Editor上で右クリックをし、Add Stateを選択しましょう。

Add State

 

State1の名前をRotationに変更します。

名前を変更

Rotationにアクションを追加します。Rotationの右下のAction Browserを選択し、ブラウザを開きましょう。

Action Browserを開く

 

Action BrowserからRotateを選択します。

Rotateを追加

アクションの「Rotate」の項目を修正します。
Y Angleの数値を5にします。

Rotateの設定

これでアクションの設定ができました。

最後に、Waiting for buttonとRotationを矢印で繋ぎ、Transitionを設定しましょう。

Transitionの設定

これでCubeのインタラクションの設定ができました。

コントローラーがオブジェクトに触れた上でボタンを入力すると、イベントが発生する方法の実装ができるようになりました。

最後にSTYLYにアップロードしましょう。

STYLYへアップロード

作ったオブジェクトをPrefab化してSTYLYにアップロードしましょう。

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

サンプルScene
こちらから動作確認できます

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