ここではジョイント(Joint)の種類とその使い方について説明します。
※この記事で使用しているUnityのバージョン:Unity2019.1
ジョイント(Joint)とは?
ジョイントは、リジッドボディを持つオブジェクト同士を繋ぐことができる機能です。これを使うと、例えば次のようなゲームオブジェクトを作ることができます。
- ドア
- バネのついたおもり
- 鎖
ジョイントの種類
Unityのジョイントにはいくつか種類があります。主なジョイントは次の3種類です(※他にも何種類かあります)。
- ヒンジジョイント(Hinge Joint)
- スプリングジョイント(Spring Joint)
- 固定ジョイント(Fixed Joint)
ヒンジジョイント(Hinge Joint)
ある軸を基準に回転するような繋がり方をするジョイントです。ドアや鎖などを再現するのに使えます。
詳細については公式マニュアルの「Hinge Joint」のページを参照してください。
スプリングジョイント(Spring Joint)
バネで繋がれたような動きをするジョイントです。
詳細については公式マニュアルの「Spring Joint」のページを参照してください。
固定ジョイント(Fixed Joint)
オブジェクト間を固定して繋ぐジョイントです。親子関係のあるゲームオブジェクトと同じような動きをします。
詳細については公式マニュアルの「Fixed Joint」のページを参照してください。
ジョイントの使い方の例
ではジョイントの具体的な設定方法を見ていきましょう。ヒンジジョイントやスプリングジョイントは、上手く設定しないとゲームオブジェクトが暴れるような挙動をする場合があるので注意しながら設定を行ってください。
基本的な例:数珠つなぎのヒンジジョイント
まず基本的な例として、ヒンジジョイントを使って下のような動きをするゲームオブジェクトを作っていきます。
手順は次の通りです。
- リジッドボディを持ったゲームオブジェクトを用意する
- 各オブジェクトにヒンジジョイントをアタッチする
- ヒンジジョイントに接続先のリジッドボディを設定する
リジッドボディを持ったゲームオブジェクトを用意する
まず、ジョイントを使うためにはリジッドボディが必要なのでそれを持ったゲームオブジェクトを用意します。ここでは新しくCubeを3つ作り、適当に並べてからリジッドボディをアタッチしておきます。
なお、今回は一番上のCubeは固定しておきたいので「Is Kinematic」にチェックを入れておいてください。
各オブジェクトにヒンジジョイントをアタッチする
そうしたらそれぞれのCubeにヒンジジョイントをアタッチしていきます。設定はそのままで構いません。
ヒンジジョイントに接続先のリジッドボディを設定する
最後にヒンジジョイントのコンポーネントに接続先のリジッドボディを設定します。「Connected Body」のところに次のように設定します。
- 一番上のCube:なし
- 真ん中のCube:一番上のCubeのリジッドボディ
- 一番下のCube:真ん中のCubeのリジッドボディ
これで設定が完了しました。ゲームを実行し、一番上のCubeを動かして動きを確認してみてください。
応用的な例:ヒンジジョイントを使ったドア
次に応用的な例として、ヒンジジョイントを使って下のような「押して開くドア」を作ってみましょう。
作り方の手順は次の通りです。
- ドアのゲームオブジェクトにリジッドボディをアタッチする
- 手順1のオブジェクトにヒンジジョイントをアタッチして設定する
ドアのゲームオブジェクトにリジッドボディをアタッチする
まずはドアのゲームオブジェクトにリジッドボディをアタッチします。
設定は基本的にデフォルトのままでも良いのですが、閉まるときにあまりバタバタと回転させたくない場合は「角抗力」を「5」くらいに設定しておくと自然な感じになります。
ヒンジジョイントをアタッチして設定する
そうしたら次はヒンジジョイントをドアのゲームオブジェクトにアタッチして設定を行います。ここでは下の図のように設定を行いました。
ドアを作るための設定のポイントは次の3つです。
- アンカー(Anchor)
- 軸
- 制限の使用(Use Limits)
アンカー(Anchor)
1つ目のポイントはアンカーです。アンカーは回転中心なので、ドアが自然に回転するようにアンカーをゲームオブジェクトの端に設定しましょう。
軸
2つ目のポイントは軸です。今回はY軸周りに回転させたいのでYを1にしておきます。
制限の使用(Use Limits)
最後に3つ目のポイントは「Use Limits」にチェックを入れて、その下の項目を設定することです。こうするとドアが必要以上に回転するのを防ぐことができます。ここでは「最小」を「-90」、「最大」を「90」として合計180度開くようにしました。
これでドアができました。実際にゲームを実行して動きを確かめてみましょう。