読者です 読者をやめる 読者になる 読者になる

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

Unity Oculus Rift PlayStationMove

以前UnityでPSMoveを使う方法を解説しましたが、ここで使ったAsset"UniMove"には少し癖がありました。

ということで、ここでそれらの紹介と解決方法を記載します。

PSMoveを使うときの注意点

1. UniMoveはMacでしか使えない

本家のサイトに記載があります。

Copenhagen Game Collective – an experimental games collective - Unimove

FREQUENTLY ASKED QUESTIONS:
1. Is UniMove available for Windows?

It looks as though Thomas finally got the windows problems cracked. However the bluetooth setup on a windows machine is very dodgy and trial and error. But, the good news is that when the connection is established, the controller will connect and work impeccably.

We have added the dll to the package and got it to work, but it is complicated. We will post a guide soon.

最後の文章に少し期待させる記述がありますが、2013/11と2014/3に確認したときで変わってなかったと思います。今後に期待ですね。

2. bluetoothペアリングはうまくいっているのに、Unity上でPSMoveが認識されないことがある

原因不明です。本家サイトの開発者に問い合わせましたが、たまに調子が悪くなるとのことでした。

(1)bluetoothのペアリングをやり直す

(2)Unityを再起動する

(3)Macを再起動する

などのどれかを実行すると直ることが多いです。経験則的には大抵は(1),(2)で十分でした。

3. Unityでビルドするとビルドに失敗する(100%発生)

これが一番困りました。Unityサポート->本家開発者の順番に問い合わせて暫定的な解決方法を得たので記載します。

(Unityサポートの方、ご対応ありがとうございました)

症状

Unityでビルドするときは特に悩まずこんな感じで設定し、"Build"ボタンをクリックするのが通常の方法です。

f:id:Takyu:20140330100715p:plain


しかし、ここで"Build"ボタンを押すと、ビルド実行中のプログレッシブバーが出た後、

ビルドが失敗します(.appは作成されません)。

出てくるメッセージは下記です。

f:id:Takyu:20140330100911p:plain
※上2つのwarningは今回とは無関係です。

Error building Player: IOException: Cannot create Temp/StagingArea/UnityPlayer.app/Contents/Plugins/libpsmoveapi.bundle/libpsmoveapi.bundle because a file with the same name already exists.

原因

UniMoveAsset上で、Plugins/libpsmoveapi.bundle のディレクトリとファイルの区別が付けられていない。

詳しくはわかっておりませんが、UniMoveは"libpsmoveapi.bundle"をディレクトリと認識しているようですが、実際にはファイルであるため何か失敗してしまうようです。

解決方法(たぶん暫定的)

Asset開発者に確認したところ、この問題はたまに発生し、以下の方法で回避しているとのことでした。

1. Finder上からlibpsmoveapi.bundleを移動させる。

(移動前)
f:id:Takyu:20140330101618p:plain


(移動後)
f:id:Takyu:20140330101644p:plain

色々入ってて見づらいですが、"libpsmoveapi.bundle"をAssets/Pluginsディレクトリから除いてます。

Finder上でファイルを除くと、Unity内のPluginsディレクトリからも"libpsmoveapi.bundle"が消えます。

2.Unity上でビルドする。

"libpsmoveapi.bundle"不在ですが、なぜかビルドはできます。この辺の原理は不明です。


3.作成したxxx.app(私の場合はUnboundedSpace.app)を右クリックし、「パッケージの内容を表示う」を選択


4. Contents/Pluginsディレクトリに、"libpsmoveapi.bundle"を追加する。

(追加前)
f:id:Takyu:20140330102012p:plain

(追加後)
f:id:Takyu:20140330102020p:plain


これでxxx.appを起動すると、アプリケーションでもPSMoveが使えます。


ただし、アプリケーション上でもPSMoveが認識されるときと、されないときがあります。

また、アプリケーションかUnityのどちらかでしかPSMoveを認識しないようにも見えます。
(利用先切り替え時には、PSMoveのペアリングをやり直すとうまくいきました)



以上のように、UniMoveでPSMoveを使うのはちょっと癖があります。


ただ、先週Sonyが発表したProject Morpheusでは、新しいHMDでPSMoveをコントローラにする予定と言われていたので、もう少し検討できるといいなと思ってます。

広告を非表示にする