こないだFoveを使うことがあって、Foveでは目の開閉を取れることを知ったのでそれをInputとして使おうという話が出ました。ただ、残念なことにInput.GetKeyDownといったような使い方が用意されているわけではなく、目の開閉を取得した時のステータス(両目/片目の開閉の計4パターン)が返ってくるAPIがある程度でした。 ※2017年12月当時
とはいえ、そのステータスを単純に比較してあげればやりたいことは出来たのでよかったのですが、どうせなら汎用的にしてみようと躍起になってInput.GetKeyDownみたいなのを作ってみました。
作ってみたコードはこんな形になります。では、少しだけ解説を。
使い方としては、
- InputEyeClosed.GetClose~~() で対象となるステータスの入力を取ります。
- InputEyeClosedUpdateを空のGameObjectにアタッチしてPrefab化してResourcesフォルダの直下に置きます。
実際にやっていることとしては、基本的に目の開閉のステータスを毎フレーム更新して変更があったときにキー・ダウン・アップの状態も更新されるようにしています。本当は全部staticのクラスでやりたかったんですが、毎フレーム処理するのは出来ない?と思い、Update関数に頼っているといった感じです。
その他に注意点としては、どうも瞬きでもステータスが変わってしまうので、ダウン・アップ系は使いづらいなという点と、常に何かしらステータスはオンになっているという点ぐらいかなと。
まぁ自分が今後もFoveを使うことがあるのかは微妙なところではありますが、何かの参考になれば幸いです。