Hinge Jointでなんとかしてみた話


はじめに

こちらの記事はVCI Advent Calendar 2021の第5日目の記事です。

今回はすぐに忘れてしまうHinge Jointの設定をメモ代わりに書いていこうと思います。
VCI作成者でHinge Jointを使おうと思ったのに、なんもわからん時に見ていただけると嬉しいです。

VCIでオブジェクトを動かしてみたい

3Dのオブジェクトをバーチャルキャストで動かしてみたいときに、VCIにLuaを入れて動かすのが一般的です。
でも、Luaを入れなくてもそれなりに動くVCIを作ることはできます。

今回はLua無しで、UnityのHinge Jointを使って銃の的を作ったお話です。

Hinge Jointで何ができる?

Hinge JointはJointの中にある設定でできます。
代表的な使い方は、ドアの蝶番なんかの動きになります。
VCIで有名なのは公式さんのサンドバックが有りますね。

銃の的を考える

銃の的を作るときは、何かが当たったときにドアが開くようなイメージです。
Luaで作ろうと思うと、当たり判定、角度計算なんかで結構大変です。

UnityのHinge Jointを使うと銃の的をこんな感じで作ることができます。
・銃の弾などが当たると、的が動く
・動いた的がもとに戻る

それだけです。

銃の的の構成

銃の的のオブジェクトです。

Unityだけで作れる簡単な構成になっています。
TargetBaseがSubItemで土台と棒、Quad01-04が的になっています。

Quadの方は適当なテクスチャを貼り付けて的っぽくしておきます。

Hinge Jointの設定

Hinge Jointは的の方(Quda01-04)に入れます。
Quad01内のHinge Hointの設定です。

Connected Body:今回は土台となる"TargetBase"のSubItemを設定します。土台が親になります。
Anchor:Hingeの回転の根元の座標を設定します。
Axis:回転方向です。今回はY軸を中心に回します。
Auto Conifure…:ここのチェック外してConnected Anchorを設定します。
Connected Anchor:アンカーの位置です。ここは的のY軸の値を入れています。
Use Spring:的が動いた後に自動で戻すのでONにします。
Spring:今回はSpringの強さを0.5で設定しています。
Motor:VCIでは使えません
Use Limits:回転の上限下限を設定できます。
適当に飛ばして。
Mass Scale:的の重さになります(たぶんそんな感じ)、的の値は最小値に設定。
Connected Mass Scale:親側のTargetBaseの重さです。

最後の2個のMassの設定をすることで、TargetBaseをつかんでもプルプルしない設定にすることができます。

的をもっと多機能にしたい

当たったときにポイントを入れる、当たったときにエフェクトや音を出したい。
なんて思った方は、Luaで作成してください。
的もSubItemで作っているので、判定も簡単に追加できるかもしれません。

問題点

簡単に作れるものは何か問題があります。
この銃の的は所有権を持ってないとちゃんと動きません。
所有権を持った状態で銃を使ってください。

おわりに

今回作成した銃の的をTSOにアップしましたのでご参考に。
銃とかの的

Hinge Jointは使い方でいろいろ遊べると思いますので、いろいろやってみてください。

TSO にゃふ屋

それでは、まったね~。