物をつかみます
前回
OVRSkelton
EnablePhysicsCapsules=物理
OVRSkeltonのEnablePhysicsCapsulesにチェックを入れると手に物理が効きます。
できた!
ただトラッキングが消えてメッシュが消えるとすとんと落ちてしまう><
手に物理
— トマシープ (@tomasheep) 2019年12月24日
OVRHandPrefab>OVRSkelton>EnablePhysicsCapsulesにチェック
トラッキングロストするとメッシュが消えて、物も落ちちゃう>< pic.twitter.com/42TTqhhqYr
LeapMotionはそんなことなかったのに。
UpdateRootScale=手の大きさ
あとUpdateRootScaleはその人の手の大きさによって手のモデルの大きさが変わるそうです!プレゼンス!
手のマテリアル
SkinnedMeshRendererにマテリアルをセットしたら変わります。
手にコライダー追従
RightControllerAnchorの下にオブジェクトを置いたら手に追従します。
000に置いたら手首らへんに表示されました
関節の位置を取得
こちらを参考に指先の位置を取得しました。
人差し指の位置だったらこんな感じ
Vector3 indexTipPos = MYRightSkelton.Bones[(int)OVRSkeleton.BoneId.Hand_IndexTip].Transform.position;
Quaternion indexTipRotate = MYRightSkelton.Bones[(int)OVRSkeleton.BoneId.Hand_IndexTip].Transform.rotation;
球をこの位置にしたらちゃんと指先に表示されました。
IndexSphere.transform.position = indexTipPos;
IndexSphere.transform.rotation = indexTipRotate;
つかむ
さっき作った指先の球コライダーと任意のオブジェクトがOnTriggerStayしていて、かつ親指がどこかの指とくっついているときに、対象のオブジェクトを指先の子にした。
つかんだ後は対象のオブジェクトをisKinematicにする。
離したらfalse。
OculusQuestのハンドトラッキングでつかむを実装!
— トマシープ (@tomasheep) 2019年12月24日
指先の球にコライダーが入っていて、親指のPinchStrengthが0.9以上の場合、球の子オブジェクトにするようにした
子オブジェクトになっている間はisKinematicをtrue pic.twitter.com/jADNjtMts5
離すときにコライダーが接触して少し飛んで行っちゃう。
最後に
刺身たんぽぽのつかみはきれいだな~
全然違うやり方でやっているか、細かい調整があるんだろうな
Oculus Questハンドトラッキング版VR刺身タンポポ、とりあえず遊べるようになりました! pic.twitter.com/ozTKaEtUO8
— こりん@VR (@korinVR) 2019年12月21日