Fixed Joint機能について


#***Fixed Jointについて***

**今回はFixed Jointの機能を使ってオブジェクト同士をくっつける方法を簡単に説明していきたいと思います。**

*今回は以下の2つのオブジェクトを使用して説明していきたいと思います．*

![bandicam 2020-03-17 16-10-05-677.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257079/2d4ac81e-7896-79b5-640a-04255aed1d3d.jpeg)
![bandicam 2020-03-17 20-33-22-708.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257079/1a7764cc-c95e-20b5-3b9a-bff1a769f41d.jpeg)![bandicam 2020-03-17 20-33-29-156.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257079/bb4561b7-1da5-b71d-ca6c-b7e71d3d1a74.jpeg)


**CubeにこんなScriptをつけてみました**

```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeScript : MonoBehaviour
{
    private float one = 0.05f;
    // Start is called before the first frame update
    void Start()
    {   
    }
    // Update is called once per frame
    void Update()
    {
        transform.position += new Vector3(one, 0, 0);
    }
}
```
すると，
![ダウンロード1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257079/35cca49d-0fc9-ad3f-b47f-c94202171ed3.gif)

もちろんCapsuleは動かず，Cubeだけ進んでいきます

***そこで使うのがFixed Jointです***

#　Fixed Jointの機能

![bandicam 2020-03-17 20-48-39-112.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257079/05c5fc1c-2550-0e89-0461-2704197eec91.jpeg)
- Connected Body：**くっつけたいオブジェクトを入れる場所**
- Break Force：**くっつけたオブジェクトを離すために必要な力**
- Break Torque：**くっつけたオブジェクトを離すために必要なトルク**
- Enable Collision：**チェックをつけるとくっつけたオブジェクト同士が衝突をすることができる**
- Enable Preprocessing：**チェックをつけると不可能な動きをした時に安定した動きを取るようにする**
- Mass Scale：**質量の大きさ**
- Connected Mass Scale：**くっつけたオブジェクトの質量の大きさ**

###今回はScriptでFixed Jointの解除を行う予定なので，Connected BodyにCapsuleを入れるだけでOKです！
![bandicam 2020-03-17 21-18-15-625.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257079/fc21cbf6-8cd2-bd23-9a4a-a681c61fd9e2.jpeg)
###**注意：くっつけるオブジェクトには必ずRigidBodyがついていることを確認してください**

**【物理的な物事を行う際はRigidbodyをつける】というUnityの鉄則があるので，今回もその鉄則にのっとり，必ずRigidbodyが両方についていることを確認してください**

(つなげたいObjectにRigidbodyがついていないとFixed JointのConnected Bodyに入れることができないです)




###***Connected BodyにCapsuleを入れ，実行すると．．．***

![ダウンロード2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257079/76ab8f5d-2b90-54d5-6c3f-d1717419d3c4.gif)

*このままだとCapsuleが引きずられている風になっているので，CubeのRigidbodyを開いて，ConstraintからFreeze Rotationnoのzにチェックを入れます*

*![bandicam 2020-03-17 15-54-55-578.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257079/4a72c364-d21a-5950-db07-2a5d4d655eb3.jpeg)

Z軸のRotationを固定したので．．．

![ダウンロード3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257079/248a47d2-53b9-e289-d05b-c017a6f36078.gif)

***これで完成です！***

##**付記**
if文とDestroyを使えば簡単にComponentの解除や追加をできるので，この機会にぜひFixed Jointを使ってみてください

```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeScript : MonoBehaviour
{
    private float one = 0.05f;
    // Start is called before the first frame update
    void Start()
    {   
    }
    // Update is called once per frame
    void Update()
    {
        
        transform.position += new Vector3(one, 0, 0);
       if (Input.GetMouseButtonDown(0))
        {
            FixedJoint component = this.gameObject.GetComponent<FixedJoint>();
            Destroy(component);
        }
        
    }
}
```

![ダウンロード4.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/257079/c5612a94-0d07-988b-a504-6989822f8418.gif)