CrossRoad

XRを中心とした技術ブログ。 Check also "English" category.

PSMoveの傾きを使って仮想ジョイスティックを作る方法

ニコニコ超会議で出展した"Unbounded Space"にはPSMoveを使っていましたが、開発中、仮想のジョイスティックみたいにできたらいいなー、と思ってました。ちょうどきっかけもあったので原理確認だけ試してみました。

1. 使ったもの

  • PSMove本体
  • UniMove

Unimove - Copenhagen Game Collective - an experimental games collective

※UnimoveはMacでしか動きません(2014/3/31時点)。またアプリケーション化するには少し手間が要ります。下記を参照ください。

UnityでPSMoveを使うときの注意点 - CrossRoad

2.手順

2.1 Unimoveを入手し、Unityプロジェクト内にインポートします。

2.2 cubeオブジェクトを配置し、scaleを例えば(100,400,100)とします。

2.3 UniMoveTest.csをcubeにアタッチします。

2.4 UniMoveTest.cs/Updete()内に以下の1行を追記します。

void Update() 
	{
		foreach (UniMoveController move in moves) 
		{
                //省略
                this.gameObject.transform.rotation = Quaternion.Slerp(this.gameObject.transform.rotation,Quaternion.Euler(move.Acceleration.x*-90.0f,move.Acceleration.y*90.0f,move.Acceleration.z*90.0f),0.5f );
                }
        //省略
      }

3. 動作確認

こんな感じに動かすことができます。

youtu.be

4. 感想

UnboundedSpace2の開発背景にも書きましたが、OculusRiftを使うと目の前が見えなくなるので従来コントローラが使いづらいという問題があります。

また、現実での距離感が掴めないので有線コントローラの線を長く取るか、線が危ないので極力無線化するなどの配慮が必要になる気がしています。これだったら無線で使えるし、体験者とPCの距離もそこまで気にしなくてよいというのがよいですね。