今回はUnity2Dでロープのような動きを実装してみます。
はじめに
Unityのバージョンは2021.3.14f1です。
線の画像にBoneを設定して、くねくねするロープのような動きにしてみます。
![](https://nosystemnolife.com/wp-content/uploads/2023/05/20230531001.png)
画像へのBoneのセットは、下記の記事と同じように行います。
実装開始
まずはロープとなる画像をProjectフォルダ内にドラッグアンドドロップします。
![](https://nosystemnolife.com/wp-content/uploads/2023/05/20230531002.png)
Boneの設定
Inspector画面から「SpriteEditor」を選択。
![](https://nosystemnolife.com/wp-content/uploads/2023/05/20230531003.png)
左上から「SkinningEditor」を選択。
![](https://nosystemnolife.com/wp-content/uploads/2023/05/20230531004.png)
「CreateBone」を選択し、画像の真ん中あたりにBoneをセットします。
![](https://nosystemnolife.com/wp-content/uploads/2023/05/20230531005.png)
左から「AutoGeometry」を選択し「GenerateForSelected」を押し、Applyで適用します。
![](https://nosystemnolife.com/wp-content/uploads/2023/05/20230531006.png)
AddComponentからSpriteSkinをアタッチして「CreateBones」を選択。
![](https://nosystemnolife.com/wp-content/uploads/2023/05/20230531007.png)
配下にBoneオブジェクトが生成されるので、全てのBoneに「Rigidbody2D」と「HingeJoint2D」をアタッチします。
![](https://nosystemnolife.com/wp-content/uploads/2023/05/20230531008.png)
HingeJointは機械部品、動力付きのタイヤ、振り子など幅広く使用されます。
HingeJoint2DのConnectedRigidbodyに「前のbone」をセットします。(bone2にはbone1をセット)
![](https://nosystemnolife.com/wp-content/uploads/2023/05/20230531009.png)
bone_1以外にセットしていきます。
ロープの両端の設定
「2DObject」→「Sprites」→「Square」を追加。
![](https://nosystemnolife.com/wp-content/uploads/2023/05/20230531010.png)
Rigidbody2Dをアタッチ、BodyTypeをStaticにします。下記のようにロープ画像の横にくっつける感じにします。
![](https://nosystemnolife.com/wp-content/uploads/2023/05/20230531011.png)
bone1のHingeJoint2DのConnectRigidbodyに追加したオブジェクトをセットします。
![](https://nosystemnolife.com/wp-content/uploads/2023/05/20230531012.png)
反対側も同じように作成し、HingeJoint2Dをアタッチ。ConnectRigidbodyにbone_8をセットします。
![](https://nosystemnolife.com/wp-content/uploads/2023/05/20230531013-1024x639.png)
実行すると下記のような感じに。
![](https://nosystemnolife.com/wp-content/uploads/2023/05/20230531016.gif)
ロープの上で動かす
全てのBoneにコライダーをセットします。
![](https://nosystemnolife.com/wp-content/uploads/2023/05/20230531015-1024x554.png)
ロープの上でボールを走らせると下記のような感じになります。
![](https://nosystemnolife.com/wp-content/uploads/2023/05/20230531017.gif)