OculusとUnityでMyライトセーバーを作る Lv01

Unity

Vader Immortalを買いました. プレイした人ならわかると思いますが, ライトセーバーが非常によくできています. これから腕試しとしてオリジナルライトセーバーをOculusとUnityで作っていこうと思います.

Making LightSaber with Unity and Oculus Lv01

出来上がったものが上の動画です. まだLv01なので効果音もなく非常にシンプルな構造です.

では, Vader Immortalで使えるライトセーバーに実装されている機能をリストアップし, ライトセーバーに必要なものを確認していきます.

  • 掴める.
  • 掴んだ状態で他のボタンを押すと光刃が形成される.
  • 振るとコントローラーが振動して音が鳴る.
  • 床を切ると焦げる.
  • ビームを弾き返すことができる.
  • 敵を切断できる.

今回は手始めに「掴める」と「掴んだ状態で他のボタンを押すと光刃が形成される」を実装していきます. 簡単に作るためにライトセーバーの本体は円柱で, 光刃の部分はLineRendererで実装します.

「掴める」の部分はCustomOVRGrabbableを使って実装します. CustomOVRGrabbableこの記事で紹介しています. 実際にはCustomOVRGrabbableを継承したOVRLightSaberを使います.

ちょうど別の目的で開発していたPhysicalLaserPointerというクラスが使えそうなので, OVRLightSaberではこれを使っています. PhysicalLaserPointerはRayとLineRendererを統合したクラスです. レーザー(Ray)が当たっている相手がDamagerableを持っていたらダメージを与える機能を持っています(私のDamagerable.csは独自の仕様が多すぎるので公開しません). PhysicalLaserPointerを使う場合は, 該当箇所を削除するか, Damager.csDamage.Injured()を実装してください.

実装したPreFabは次のような構造になりました.

ライトセーバーLv01の持ち手はただの円柱です. 円柱の先端にレーザーの発射口を設定しています. 作ってから気づいたんですが, LineRendererを使って光刃を出しているので, 受太刀ができません. 図らずしもライトセーバーというよりもSEEDのビームサーベルになってしまいました.

上記の実装したのが初めの動画のものになります. Lv02ではウォンって感じの例の音を出していこうと思います.

コメント