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

たこやき部屋

SteamVRを使って、Unityでゲームを開発したい

VRボンバーマンを作りたい その4(コントローラボタンの状態)

SteamVR Unity プログラミング VR Vive ゲーム開発 SteamVR Unity Toolkit VRTK

VRTK Ver2.2.1の記事です。
Ver3になって使い方が色々と変わっています。ついでに名前も「SteamVR Unity Toolkit」から「Virtual Reality Toolkit」へ変わっています。
使い方はこちらの記事を参照してください。
takoyakiroom.hatenablog.com
(以上、2017/02/04 追記)


さてさて、移動もできるようになったので、爆弾を置く処理を作ってみます。

VRTK(SteamVR Unity Toolkit)でコントローラの状態を取得するには、リスナーを作ってあげないといけないと、ふむふむ。
よし、サンプルを見ながら作ってみるぞ~。

まず、コントローラにリスナー用のScriptを追加して・・・
f:id:takoyakiroom:20160906003059j:plain

Script内は、トリガボタンを離した時(DoTriggerReleased)に爆弾を置く処理を呼ぶ・・・と
ボタンを離した時にしたのは自分がそうしたかっただけで、押した時に置くでもOKです。

ボタンは以下の状態が取れます。

トリガ
DoTriggerHairlineStart ちょい押し開始
DoTriggerHairlineEnd ちょい押し終了
DoTriggerTouchStart さわるの開始
DoTriggerTouchEnd さわるの終了
DoTriggerPressed 押した
DoTriggerReleased 離した
DoTriggerClicked クリック
DoTriggerUnclicked クリックやめ
DoTriggerAxisChanged 動かした
メニューボタン
DoApplicationMenuPressed 押した
DoApplicationMenuReleased 離した
グリップ
DoGripPressed 押した
DoGripReleased 離した
タッチパッド
DoTouchpadPressed 押した
DoTouchpadReleased 離した
DoTouchpadTouchStart さわるの開始
DoTouchpadTouchEnd さわるの終了
DoTouchpadAxisChanged スリスリした

トリガは引き具合によって4種類の状態が取れます。
トリガを引くにつれ、HairlineStart→TouchStart→Pressed→Clickedの順に遷移します。(こまけーなぁ)
「クリック」は何の事かと思ったのですが、トリガを引いていくと一番最後でクリックぽい音がします。これの検知でした。

なお、引数の1つである「ControllerInteractionEventArgs」からは以下の値が取れました。

uint controllerIndex; コントローラのIndex
float buttonPressure; ボタンの状態(0f~1f) 0f:押されていない 1f:押されている ※トリガはアナログ値がとれます
Vector2 touchpadAxis; タッチパッドに触れている位置X,Y (-1f~1f)
float touchpadAngle; タッチパッドに触れている角度

一応、使う時は値を設定している「VRTK_ControllerEvents.Update()」でどう実装されているか一度確認してみてください。


ボタンの検出も出来るようになったので、爆弾置く処理を迷路を管理しているScriptに入れてみました。

完成~~~! 爆弾置いてみたぞ~~~~!!
いやー、やはり目の前で赤くなりながら、大きくなっていくと「急いで逃げなきゃ」って気持ちになります。
f:id:takoyakiroom:20160906012032j:plain


さて、ゲーム作るのは今回はここまで。
そろそろモデリングの勉強をしないと、この先作れなそうな感じがしてきたので3Dモデル作りに挑戦。
どのアプリが使いやすいのかすら分からないけど、とりあえずメタセコイアをインストールして、使い方をあれこれ調べてと。
うーん、初めてだといろいろ大変だわ。

そして、完成したのがこれです。
f:id:takoyakiroom:20160906012540j:plain

・・・VRって酔うゲームはすぐに酔うじゃないですか。
そうなると手近な所に必要ですよね、洗面器。
じゃあゲームの中に洗面器置いとけば、いざという時に困らないんじゃね!?(なんというユーザフレンドリー仕様)

とういうわけです

え~と、もう1つ、アイテムっぽいのも作ってみたかったので、試しに適当に作ってみました。
f:id:takoyakiroom:20160906013140j:plain

でかい! 顔の部分だけで自分の背丈くらいあるし。
アイテムなので、ちょっと光った感じにしてクルクル回したいなぁ。
まあ、今回作ったのはただの練習用でゲームに出す為に作った物ではなく、ちゃんとした物は作ります。

でもやっぱ、自分の作ったものが目の前に出てくるのは超楽しー!
VR持ってる人は、一度自分で何か作ってみるべきです。
「やったことない」とか「できない」とか言ってる場合じゃねー!!

一番のメインになるであろう、爆弾が爆発した時の炎。
やはり、自分のイメージしたとおりにするには自分で作るしかないのかな?
パーティクル使うの??
頑張って、Let's爆裂してみます。