Unity+UnrealEngine4+Blog.

UnityやUnrealEngine4とかについて学習したことを書いてます

オブジェクトを一瞬だけフリーズさせて、その場にビタッと止めてまた動けるようにする

リジットボディーを使用していて、ある場面でバシー!と動きを止めたい時にどうすればいいかの方法です。

 

キャラクターにアタッチされているスクリプトとして

rb = this.GetComponent<Rigidbody>();


rb.constraints = RigidbodyConstraints.FreezePosition;  //positionをフリーズさせる
rb.constraints = RigidbodyConstraints.None; //解除

 

とコードを並べと書くとその場で止まってくれました。

その後は動かすことができます。

 

いつものリジットボディーのConstraintsへチェックを入れるやつです。

これを一瞬だけチェックをいれるというものです。

f:id:nabesi777:20181208175007j:plain

 

Positionを止めたいなら

FreezePosition

 

Rotationを止めたいなら

FreezeRotation

 

全部止めたいなら

FreezeAll

 

として、外したい場合はNoneとします。

 

動きは一瞬止めて、その後はRotationだけロックしたい場合は下記のように書くと実現できます。


rb.constraints = RigidbodyConstraints.FreezePosition;
rb.constraints = RigidbodyConstraints.FreezeRotation;