第29章 ユニティジョイントジョイント

ジョイント コンポーネントは、剛体を別の剛体または空間内の固定点に接続します。ジョイントは剛体を動かす力を加えますが、ジョイント制限はその動きを制限します。Unity は、剛体コンポーネントにさまざまな力と拘束を適用できる次のジョイントを提供し、これらの剛体にさまざまなモーションを持たせることができます。

Hinge Joint: 2 つの剛体がヒンジで接続されているかのように動きます。ドアや指の関節をシミュレートするために使用されます。

固定ジョイント: 2 つのリジッド ボディをバインドし、相対的な位置が変わらないようにします。

スプリング ジョイント: 2 つのリジッド ボディを接続して、スプリングのように動きます。

Character Joint: 股関節や肩などのボール アンド ソケット ジョイントをシミュレートします。

構成可能なジョイント 構成可能なジョイント: ラグドールのジョイントなど、あらゆる骨格ジョイントをシミュレートします。

次に新規シーン「SampleScene4.unity」を作成し、球体Sphereを作成します。

次に、球体に「ヒンジ ジョイント」タイプのジョイントを追加します。ナビゲーションメニューバーで「コンポーネント」→「物理」を選択し、そこから「ヒンジジョイント」コンポーネントを選択します。このコンポーネントを追加する前に、まず衝突ボディと剛体という 2 つのコンポーネントを追加する必要があります。Sphere を作成すると、それに衝突ボディが自動的に追加され、次に「Hinge Joint」コンポーネントを追加すると、Unity が自動的に剛体コンポーネントを追加します。重力が球体に影響を及ぼさないようにするために、剛体コンポーネントの「重力を使用」属性をキャンセルしました。次に、Sphere ゲーム オブジェクトをクリックして、そのインスペクター ビューを表示します。

コンポーネント「Hinge Joint」には、「Connected Body」(接続された剛体)、「Anchor」(アンカーポイント)、「Axis」(軸方向)の 3 つのプロパティが表示されます。アンカー ポイントと軸はどちらもゲーム オブジェクトのローカル座標系であり、「剛体を接続」するには、剛体を持つ別のゲーム オブジェクトを追加する必要があります。次のように:

Rigidbody コンポーネントが追加された Sphere の真上に Cube を追加しました。Cube に重力が影響しないようにするために、剛体コンポーネントの「Use Gravity」属性をキャンセルしました。次のように:

次に、Sphere ゲーム オブジェクトをクリックして選択し、次に示すように、[Hierarchy] パネルから Sphere ゲーム オブジェクトの「Hinge Joint」コンポーネントの下にある「Connected Body」の後ろにある入​​力ボックスに Cube をドラッグします。

次に、以下に示すように、球に X 軸方向の力を加えます。

次に、Play に来てプロジェクト全体を実行します。

ランニング効果が確認でき、黄色のボールSphereが右に移動すると、赤色のCubeも引っ張られて一緒に移動します。まるで二人の間には「一本の線」があるようです。

「ヒンジ ジョイント」ヒンジ ジョイントを使用する典型的な例は、ドアの開閉効果です。

まず、新しいシーン「SampleScene5.unity」を作成し、次に地面として Plane を追加し、それを「ドア軸」にするために Cube を追加し、それから「ドア軸」にするために Cube(1) を追加します。 ”。「扉の葉」になる。ドア シャフトとドア リーフの両方に剛体を追加し、最後にドア リーフに「ヒンジ ジョイント」を追加します。

以下に示すように、まずポータル軸 Cube を追加し、剛体コンポーネントを追加します。

次に、以下に示すように、ドア リーフ Cube(1) を追加し、剛体コンポーネントも追加します。

 

次に、ドア LeafCube(1) に「Hinge Joint」コンポーネントを追加します。ここでしなければならないことは、黄色の「ドア リーフ」を紫色の「ドア軸」を中心に回転させて、ドアが開くエフェクトを作成することです。言い換えれば、ドア リーフに力を加えると、ドアの軸は静止したままで、ドア リーフはドアの軸を中心に回転する必要があります。したがって、ドア軸の場合、その剛体コンポーネントは「Is Kinematic」属性をチェックする必要があります (剛体の制御下では移動または回転できません)。次のように:

次に、次のように、ドア リーフが衝突後に回転し続けないように、ドア リーフの剛体コンポーネントに抵抗を与える必要もあります。

次に、以下に示すように、ドア リーフの「ヒンジ ジョイント」ヒンジ ジョイント プロパティです。

まず、ポータル軸を「接続されたボディ」の位置にドラッグし、アンカー アンカー ポイントと軸軸パラメータを変更する必要があります。ドアの回転を制御するには、主にヒンジ ジョイント コンポーネントの Anchor プロパティと Axis プロパティを変更します。ゲーム オブジェクトのドアの葉がアンカー ポイントを中心に軸方向に移動または回転することに注意してください。したがって、アンカー ポイントはドアの軸に近いドア リーフの端にする必要があり、軸方向は Y 軸の垂直方向にする必要があります。以下に示すように、「角度制限の編集」をクリックします。

 

上の図は、アンカー ポイントがドアの軸に位置し、軸の方向が Y 軸の上向きであることを示しています。次に、ドアに力を与えると、ドアは移動し、ドア軸を中心に回転します。ここでは、カプセル Capsule ゲーム オブジェクトを追加します。

次に、剛体コンポーネントを追加し、「Is Kinematic」プロパティをチェックします。

次に、「MoveScript.cs」スクリプトを作成し、コードを使用してカプセルの動きを制御します。コードは次のとおりです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MoveScript : MonoBehaviour
{
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.W)) transform.Translate(transform.forward);
    }
}

次に、以下に示すように、スクリプトを Capsule カプセルにアタッチし、Play がプロジェクト全体を実行します。

緑色のカプセルを前方に動かすとドアに衝突し、ドアは前方に移動しますが、ヒンジジョイントの影響でドアの軸に沿ってしか回転できず、これがドアを開ける効果となります。

このコースに関連するコンテンツは、Baidu Cloud Disk で共有されています: https://pan.baidu.com/s/1e1jClK3MnN66GlxBmqoJWA?pwd=b2id

おすすめ

転載: blog.csdn.net/konkon2012/article/details/130479899