【unity入門】Constraintsをスクリプトで制御しよう!


Rigidbodyを追加したオブジェクトを転がしたくない場合などに使うConstraints。

そんなConstraintsをスクリプトで制御したくなる時ってありますよね。

今回は、Constraintsをスクリプトで制御する方法についてまとめました。

この記事では、

1.移動しないようにする
2.回転しないようにする

3.移動も回転もしないようにする
4.制限を解除する

といったことを扱っていきます。

移動しないようにする

FreezePositionX

FreezePositionXをオンにするには、

Rigidbody.constraints = RigidbodyConstraints.FreezePositionX;

サンプルコードは、

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

public class NewBehaviourScript : MonoBehaviour {


    //ゲーム起動時に呼び出される
    void Start()
    {
        //Rigidbodyを取得
        var rb = GetComponent<Rigidbody>();

        //FreezePositionXをオンにする
        rb.constraints = RigidbodyConstraints.FreezePositionX;
    }
}

FreezePositionY

FreezePositionYをオンにするには、

Rigidbody.constraints = RigidbodyConstraints.FreezePositionY;

サンプルコードは、

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

public class NewBehaviourScript : MonoBehaviour {


    //ゲーム起動時に呼び出される
    void Start()
    {
        //Rigidbodyを取得
        var rb = GetComponent<Rigidbody>();

        //FreezePositionYをオンにする
        rb.constraints = RigidbodyConstraints.FreezePositionY;
    }
}

FreezePositionZ

FreezePositionZをオンにするには、

Rigidbody.constraints = RigidbodyConstraints.FreezePositionZ;

サンプルコードは、

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

public class NewBehaviourScript : MonoBehaviour {


    //ゲーム起動時に呼び出される
    void Start()
    {
        //Rigidbodyを取得
        var rb = GetComponent<Rigidbody>();

        //FreezePositionZをオンにする
        rb.constraints = RigidbodyConstraints.FreezePositionZ;
    }
}

FreezePositionXYZ全て

FreezePositionXYZ全てをオンにするには、

Rigidbody.constraints = RigidbodyConstraints.FreezePosition;

サンプルコードは、

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

public class NewBehaviourScript : MonoBehaviour {


    //ゲーム起動時に呼び出される
    void Start()
    {
        //Rigidbodyを取得
        var rb = GetComponent<Rigidbody>();

        //FreezePositionXYZ全てをオンにする
        rb.constraints = RigidbodyConstraints.FreezePosition;
    }
}

回転しないようにする

FreezeRotationX

FreezeRotationXをオンにするには、

Rigidbody.constraints = RigidbodyConstraints.FreezeRotationX;

サンプルコードは、

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

public class NewBehaviourScript : MonoBehaviour {


    //ゲーム起動時に呼び出される
    void Start()
    {
        //Rigidbodyを取得
        var rb = GetComponent<Rigidbody>();

        //FreezeRotationXをオンにする
        rb.constraints = RigidbodyConstraints.FreezeRotationX;
    }
}

FreezeRotationY

FreezeRotationYをオンにするには、

Rigidbody.constraints = RigidbodyConstraints.FreezeRotationY;

サンプルコードは、

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

public class NewBehaviourScript : MonoBehaviour {


    //ゲーム起動時に呼び出される
    void Start()
    {
        //Rigidbodyを取得
        var rb = GetComponent<Rigidbody>();

        //FreezeRotationYをオンにする
        rb.constraints = RigidbodyConstraints.FreezeRotationY;
    }
}

FreezeRotationZ

FreezeRotationZをオンにするには、

Rigidbody.constraints = RigidbodyConstraints.FreezeRotationZ;

サンプルコードは、

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

public class NewBehaviourScript : MonoBehaviour {


    //ゲーム起動時に呼び出される
    void Start()
    {
        //Rigidbodyを取得
        var rb = GetComponent<Rigidbody>();

        //FreezeRotationZをオンにする
        rb.constraints = RigidbodyConstraints.FreezeRotationZ;
    }
}

FreezeRotationXYZ全て

FreezeRotationXYZ全てをオンにするには、

Rigidbody.constraints = RigidbodyConstraints.FreezeRotation;

サンプルコードは、

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

public class NewBehaviourScript : MonoBehaviour {


    //ゲーム起動時に呼び出される
    void Start()
    {
        //Rigidbodyを取得
        var rb = GetComponent<Rigidbody>();

        //FreezeRotationXYZ全てをオンにする
        rb.constraints = RigidbodyConstraints.FreezeRotation;
    }
}

移動も回転もしないようにする

移動も回転もしないようにするには、

Rigidbody.constraints = RigidbodyConstraints .FreezeAll ;

サンプルコードは、

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

public class NewBehaviourScript : MonoBehaviour {


    //ゲーム起動時に呼び出される
    void Start()
    {
        //Rigidbodyを取得
        var rb = GetComponent<Rigidbody>();

        //移動も回転もしないようにする
        rb.constraints = RigidbodyConstraints.FreezeAll;
    }
}

制限を解除する

制限を解除するには、

Rigidbody.constraints = RigidbodyConstraints.None ;

サンプルコードは、

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

public class NewBehaviourScript : MonoBehaviour {


    //ゲーム起動時に呼び出される
    void Start()
    {
        //Rigidbodyを取得
        var rb = GetComponent<Rigidbody>();

        //移動も回転もしないようにする
        rb.constraints = RigidbodyConstraints.None;
    }
}

まとめ

この記事では、Constraintsをスクリプトで制御する方法についてまとめました。

少しでも役に立ったのなら幸いです。