【Unity/PlayMaker】コントローラーのボタン入力による、インタラクションの実装

この記事ではコントローラーのトリガーボタンを入力することで、インタラクションを引き起こす方法を説明します。

ボタン入力によるインタラクションを実装することで、空間への没入感を高めることができます。

この記事を理解することで、以下のようなインタラクションを作れます。

事前準備

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

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

概要

STYLY上には、あらかじめ、「Global_TriggerPressDown_R(右コントローラーボタン)」と「Global_TriggerPressDown_L(左コントローラーボタン」のグローバルイベントが組み込まれています。

この2つのグローバルイベントと、アクションを組み合わせることによって、インタラクションを引き起こすことができます。

今回は例として、コントローラーのボタンを入力すると、弾丸が発射される仕組みを設計します。

大きな流れは以下になります。

  1. 弾丸を作る
  2. PlayMakerで弾丸のアクションを設定する
  3. 発射台を作る
  4. PlayMakerで発射台のアクションを設定する

弾丸を作る

最初に、弾丸を作ります。

Hierarchy上で、Hierarchy上で、右クリックをし「Create > 3D Object > Sphere」を選択します。すると、Sphereが作られ、弾丸となります。

Sphereをつくる

Sphereが作られたら、Inspecterの画面を開きます。弾丸の設定をします。

名前:bullet
Positionを ( X, Y, Z ) = ( 0, 0, 0)
Scaleを ( X, Y, Z ) = ( 0.5, 0.5, 0.5 )

名前 : Position : Scale を変更

このbulletにPlayMakerでアクションを加えます。

PlayMakerで弾丸のアクションを設定する

bulletを選択した状態で、PlayMaker Editorを開き、右クリックで「Add FSM」を選択しFSMを追加します。赤い「玩」というアイコンがbullet上に表示されたら、FSMが追加された状態です。

FSMを追加

FSMを追加したら、「State 1」の名前を「bullet action」に変更しましょう。

State 1の名前を変更

つぎに、アクションを追加します。アクションを追加するには、Stateタブを選択した状態で、右下の「Action Browser」を選択し、ブラウザーから使用するアクションを選択します。

Action Browserを表示

今回使用するアクションは「Translate」と「Destroy Object」です。
一番上の検索欄より、TranslateとDestroy Objectを検索し、State内に追加しましょう。

「Translate」と「Destroy Object」を追加

アクションが追加されたら、設定をします。

Translate3Dモデルを移動させるアクションです。
以下のように設定します。

Xには、=アイコンを選択して、5を入力します。
Spaceは、Selfを入力してください。

Spaceは、World(ワールド座標)とSelf(ローカル座標)の2種類あります。
ワールド座標は原点から見た座標、ローカル座標は親からみた相対的な座標です。
今回は、発射台を回転させたり位置を変更したときに、発射台の座標に相対的に弾丸の座標も変わってほしいので、Selfにしてあります。

Translateを設定

これでbulletに移動(発射)のアクションが追加されました。

次に、Destroy Obectを設定します。

Destroy Object:対象の3Dモデルが消滅するアクションです。
Destroy Objectを設定しないと、bulletを発射した際に、残り続けてしまうためです。

以下のように設定します

  • Game Object : Hierarchy内の「bullet」をドラッグして設定
  • Delay : 5に設定
    DelayはGame Objectが消えるまでの時間です。今回は5秒後にbulletが消滅するように設定しました。

Destroy Objectを設定

これで弾丸(bullet)の設定ができました。

最後に、bulletをプロジェクトビューにドラッグして、prefab化しましょう。
prefabにしましたら、Hierarchy内のbulletは削除します。

prefab化

次に、発射台をつくります。

発射台を作る

Hierarcy上で、右クリックをし「Create > 3D Object > Cube」を選択します。
Cubeが作られ、弾丸の発射台となります。

Cubeをつくる

Cubeの設定をしましょう。以下のように設定します

  • 名前:Point
  • Position / Rotation : ( X, Y, Z) = ( 0, 0, 0 )
  • Scale : ( X, Y, Z ) = ( 1, 1, 1 )

発射台(Point)の設定

Cubeのアクションを追加します。

PlayMakerで発射台のアクションを設定する

Cubeを選択した状態で、PlayMaker Editor上で右クリックをします。
メニューが開かれるので「Add State」を選択し、「State 1」が追加されました。

Add State

State 1の名前を、「Waiting for Trigger」とします。

名前を変更

次に、Stateを2つ追加します。
PlayMaker Editor上で右クリックし、「Add State」を選択します。
2回行い、Stateを2つ追加しましょう。

Stateを2つ追加する

Stateの名前を変更しましょう。以下のようにします。

  • State 1 → Trigger 1
  • State 2 → Trigger 2

Trigger 1と2に、コントローラーのボタンの入力によるインタラクションを実装します。

PlayMaker Editorの右画面の「Event」タブを開き、下の「Add Event」を選択し、「Global_TriggerPressDown_R」「Global_TriggerPressDown_L」を追加します。

Global_TriggerPressDown_R / Global_TriggerPressDown_Lを追加

この「Global_TriggerPressDown_R/L」がコントローラーのトリガーボタンの情報を取得するイベントになります。
右コントローラー(Global_TriggerPressDown_R)の設定からしましょう。

Trigger 1を右クリックし、「Add Transition > Global_TriggerPressDown_R」を選択します。

イベントの追加

Trigger 2にも同じように選択し、下のような状態にしましょう。

イベントの追加

次に、イベントの遷移を追加します。Trigger 1の「Global_TriggerPressDown_R」の枠を選択し、矢印をTrigger 2につなげます
同じように、Trigger 2をTrigger 1にもつなげましょう。

イベントの遷移を設定

このイベント遷移の設定は、トリガーボタンを押すたびに、弾丸が発射される仕組みとなります。

加えて、「Waiting for Trigger」にも「Global_TriggerPressDown_R」を設定し、Trigger 1につなげましょう。

イベント遷移の設定

これで、イベント遷移の設定ができました。

次にインタラクションの実装をするために、アクションを追加しましょう。

Waiting for Triggerに「Get Mouse Button Down」のアクションを追加します。

Get Mouse Button Down

Get Mouse Button DownGet Mouse Button DownはWEBブラウザー上でSTYLYを鑑賞・体験する際に、マウスのボタン操作がコントローラーのボタンの情報として入力されるようにするアクションです。

項目は以下のように変更します。
・Send Event : Global_TriggerPressDown_R(タブから選択)

Get Mouse Button Downの設定

次に、Trigger 1と2に弾丸を発射するアクションを追加します。

Trigger 1のStateタブを選択し、アクションブラウザーからアクションを追加しましょう。
今回使用するアクションは「Create Object」と「Get Mouse Button Down」です。
アクションブラウザーから追加しましょう。

「Create Object」と「Get Mouse Button Down」を追加

Create Objectこのアクションが発動すると、指定した3Dモデルが生成されます。

項目を以下のように設定しましょう。

  • Game Object:prefab化した「bullet」(プロジェクトからドラッグして指定)
  • Spawn Point:Hierarchy内の「Point」(Hierarchyからドラッグして指定)

Game Objectは生成する3Dモデルです。今回は弾丸を発射させる(生成する)ために、prefab化したbulletを選択しましょう。

Spawn PointはGame Objectをどの場所に生成するかを指定します。今回はPointが発射台となるため、Pointを選択しましょう。

Game Object / Spawn Pointの指定

次に、Get Mouse Button Downを設定します。

Get Mouse Button Downを設定

この状態の「Get Mouse Button Down」と「Create Object」をコピーし、Trigger 2にペーストしましょう。

Trigger 1のアクションをTrigger 2に複製

これで弾丸が発射されるインタラクションが完成しました。

STYLYへアップロード

最後に、STYLYへアップロードするために、発射台(Point)をprefab化しましょう。
Hierarchyからプロジェクト画面へドラッグし、prefabにします。

prefabにする

bulletのprefabもありますが、STYLYへアップロードするのは「Point」のみです。

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

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

さまざまなアクションを実装してみましょう!

newbview popup