Constraintsをスクリプトで制御しよう!

内容

Rigidbodyを追加したオブジェクトを転がしたくない場合などに使うConstraints。
そんなConstraintsをスクリプトで制御したくなる時ってありますよね。
今回は、Constraintsをスクリプトで制御する方法についてまとめました。

移動しないようにする

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;
    }
}

参考サイト


この記事が気に入ったらサポートをしてみませんか?