UnityでVRコントローラーの速度、加速度、角速度を取得する
Unity+SteamVRでVRコントローラの速度、加速度、角速度などを取る方法を書きます。
まず、[CameraRig]内のコントローラーのオブジェクトに、Velocity Estimatorというなんかもとからあるスクリプトをくっつけます。
*コントローラーに限らず、つければ速度などを取れるので便利です。
最近何フレームの平均を取るかも簡単に設定できていいですね
僕は試してみて5がいい感じに思えました。
Estimate On Awakeにチェックを入れておくか、VelocityEstimator.BeginEstimatingVelocity関数を呼べば計測が始まるようです。
他の自分のスクリプトなどからアクセスするときは
using Valve.VR.InteractionSystem;
で名前空間を加えた上で、
VelocityEstimator VE = GetComponent<VelocityEstimator>();
などとして取得した後、
VE.GetVelocityEstimate() で速度
VE.GetAccelerationEstimate() で加速度
VE.GetAngularVelocityEstimate() で角速度
をVector3で取得できます!
Vector3.magnitudeを使うと、速度などをそれぞれの大きさ(float型)に変換できるので便利です。
使用例として、自分のゲームでは
刀を刃がついている方向に、ある程度の速さで振ったときのみ攻撃判定(音)が出る
という処理が作れました。
0コメント