本日はファンタジー枠です。
昨日からHoloLensのHandTrackingを使用したプラズマボールを作成しています。
今回はインターネットマーケットの[Booth]で公開、販売されている[Energy Springjoint Ball by Raivo]を用いています。
前回はURPで使用できるようにShaderを編集しています。
今回はHandTrackingへの対応を行います。
〇作ったもの
〇環境
・Unity2021.1.10f1
・UniversalRP
・Energy Springjoint Ball by Raivo
〇プラズマボールを動かす。
[Energy Springjoint Ball by Raivo]はトランスフォームを変更するとまるでばねのように元の位置に戻るようになっています。
[Energy Springjoint Ball by Raivo]のオブジェクトのインスペクターウィンドウを見ると[Spring Joint]コンポーネントによってばねの動きが再現されています。
[Spring Joint]コンポーネントでは[Connected Body]の設定によって親となるオブジェクトを指定できます。
このオブジェクトは[Rigidbody]コンポーネントが存在する必要があります。
[Rigidbody]コンポーネントがアタッチされたからのゲームオブジェクトの子オブジェクトとしてボールを配置します。
親オブジェクトの[Rigidbody]コンポーネントからは[Use Gravity]のチェックを外し重力としての使用を無効化します。
以上でプラズマボールを動かすことができるようになりました。
〇HandTrackingとの連携
①からのゲームオブジェクトを作成し、以下のコンポーネントをアタッチします。
・HandBounds
・SolverHandler
・HandConstractPlamUp
②[SolverHandler]コンポーネントの[Tracked Target Type]を[Hand Joint]、[Tracked Handness]を[Right]、[Tracked Hand Joint]を[Palm]に設定します。
これで右手のHandTrackingの中でPalm(手の甲)が追尾されるようになります。
③[HandConstractPlamUp]コンポーネントの[OnFirstHandDetected()]イベントにボールの出現するように各ゲームオブジェクトを有効、もしくはエフェクトをPlay()に指定、[OnFirstHandLost()]に各ゲームオブジェクトを無効、もしくはエフェクトをStop()に指定します。
これで手を検知した際プラズマボールが手に追従するようになります。また、手の検知を失った場合プラズマボールが焼失します。
④[HandConstractPlamUp]コンポーネントの[Palm Up]の[Require Flat Hand]にチェックを入れ有効化します。これによって手のひらを顔に向け手を開いた場合のみプラズマボールが出現するようになります。
以上でプラズマボールが完成しました。