【ユニティ3D】ユニティでロープ(ロープ)作りのまとめ



Summary Making Rope Unity



最近は、プロジェクトのニーズから、一丸となってロープ生産のリソースを探し、学んでいます。そこで、CSDN、BaiDu、Bilibiliでさまざまな関連リソースを探し始めましたが、ロープを作成する最も基本的な方法についてのみ説明しました。つまり、ロープはいくつかのゲームオブジェクト(Cube、Capusual、Cylinderなど)によってスプライスされます。 。)。チェン、および各ゲームオブジェクトはヒンジジョイントコンポーネントを追加します。各GameObjectのHingeJointコンポーネントのConnectionBodyプロパティは、そのすぐ上のGameobjectのRigibodyコンポーネントです。次に、この一般的なアプローチを紹介します。

通常の方法:



まず、Unityシーンで空のGameObjectをビルドし、名前をRopeParentに変更します。 RopeParentディレクトリにいくつかのキューブを追加します。



次に、RopeParentでropeという新しいスクリプトを作成します。

このスクリプトの内容は次のとおりです。



using System.Collections using System.Collections.Generic using UnityEngine public class rope : MonoBehaviour { / / Store RopeParent Rigibody component internal Rigidbody RBody // Use this for initialization internal void Start () { //Add Rigibody component to RopeParent this.gameObject.AddComponent() / / Get the RigiParent Rigibody component and assign it to RBody this.RBody = this.gameObject.GetComponent() this.RBody.isKinematic = true //RopeParent number of sub-objects / / Add a Hinge Joint component to each child object int childcount = this.transform.childCount for (int i = 0 i

最終的な結果は次のとおりです。ロープを回すと、ポイントを中心に回転します。

しかし、私自身のプロジェクトでは、他のオブジェクトと一緒に移動するためにこのロープが必要ですが、上記の方法ではこの効果を達成できません。そう。 。 。 。長い間試みた後、私は壁をひっくり返すことにしました。ついにYoutobeで同様のチュートリアルを見つけました。次に、メソッドを次のように要約します。

まず、キューブを使用して、プロジェクト内のロープの動きをシミュレートします。各カプセルは、各ロープの要約です。

各カプセルには文字ジョイントコンポーネントがあり、コンポーネントの投影を有効にするチェックボックスがマークされます。各カプセルにはロープスクリプトがあります。

Ropeスクリプトコードは次のとおりです。

using System.Collections using System.Collections.Generic using UnityEngine public class Rope : MonoBehaviour { // Use this for initialization void Start () { gameObject.GetComponent().connectedBody = gameObject.transform.parent.GetComponent() } }

コードは、現在バインドされているCapsuleのCharacterJointコンポーネントの接続ボディをその親のRigibodyに設定することです。

このように、上部の立方体の動きもロープの動きを駆動します。

効果は基本的には達成されますが、ヒンジジョイントにバインドされたオブジェクトが固定点を中心にしか回転できず、親パーツと一緒に移動できない理由がまだわかりません。通りかかった偉大な神々が私の疑問に答えるのを助けてくれることを願っています。