CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Unity】重力についての設定方法と問題解決方法
こんにちは!コチラの記事では、Unity での重力の設定についての方法と、重力の設定に関する問題解決方法について解説していきます。
重力の設定・変更方法について
Unity のソフト上で重力の設定や変更をするためには、以下の2つの項目を扱う必要があります。
- Gravityの設定
- Rigid Bodyの設定
Gravity とは?
Gravity ではゲーム全体の重力の設定をすることができます。
デフォルトの設定では、地球と同じ重力がかかるように、Y軸にマイナスの数字(下に向かう加速度)が設定されてあります。
Edit → Project Settings… を選択し、開かれた設定タブの左側にある Physics を選びます。
Physics の1番上にある Gravity の値を調整することで、ゲーム全体の重力を変更することができます。
重力加速度を遅く変更するには?
重力加速度を遅く変更するには、GravityのY軸の数値にデフォルトの数値より小さいマイナスの値(例:-1など)を入れることで設定することができます。
デフォルトのままだとこのように落下しますが、Edit → Project Settings… を選択し、開かれた設定タブの左側にある Physics の1番上にあるGravity のY軸にデフォルトより小さいマイナスの値を入力します。
そうすると以下のように、重力加速度を遅く設定することができます。
反対にさらに数値を大きなマイナスの値(例:-20など)に設定することで重力加速度を速く設定することが可能です。
Rigid Body とは?
Gravity で設定した重力をゲームオブジェクトに影響させるためには、ゲームオブジェクトごとにRigid Body のコンポーネントを追加することが必要です。
Rigid Body を設定すると、重力だけでなく質量や抵抗などの物理演算も行うことができます。
Rigid Body の設定方法
Rigid Body は、ゲームオブジェクトを選択し、Inspector → Add Component → 検索窓からRigid Body を検索し、選択することで設定することができます。
重力によって落ちたゲームオブジェクトが、地面に衝突するなどの設定をするためには Rigid Body に加えて Collider の設定も必要となります。
Collider についての設定については、以下の記事に詳しくまとめられていますのでぜひ参考にしてみてください。
重力・Rigid Body の設定での問題解決方法
重力の設定や、Rigid Body の設定をする上で起きる問題や疑問点の解決方法を以下解説します。
重力がかからないとき・ゲームオブジェクトが落ちないときは?
重力がかからないとき、ゲームオブジェクトが落ちないときには、以下の原因が考えられます。
- Gravity に数値が入っているか
- Rigid Body のコンポーネントが設定されているか
- Rigid Body の Use Gravity のチェックが外れていないか
Gravity に数値が入っているか
Gravity はデフォルトの状態で数値が入っていますが、数値を変更したりした際などに、誤ってY軸の値を0にしてしまっていないか確認してみてください。
0になっていた場合は Gravity に数値をいれることで重力が発生します。
Rigid Body のコンポーネントが設定されているか
Rigid Body のコンポーネントは、ゲームオブジェクトごとに設定する必要があります。
落下しないゲームオブジェクトに Rigid Body が設定されているかどうか確認してみてください。
Rigid Body の Use Gravity のチェックが外れていないか
ゲームオブジェクトの Inspector → Rigid Bodyの「 Use Gravity 」のチェックが外れていないかを確認してみてください。
デフォルトの状態ではチェックが入っているはずですが何かの拍子に外れている可能性があります。
外れていた場合には、再度チェックを入れることで重力を発生させることができます。
スクリプトで特定のゲームオブジェクトのみ重力を変更するには?
特定のゲームオブジェクトのみ重力を変更することはできませんが、スクリプトによって特定のオブジェクトのみ重力が異なる見え方をするように設定することができます。
上記の記事のスクリプトを使用して、変更してみました。
スクリプトを特定のオブジェクトのみに追加し、Inspector → Gravity Controller ( Script ) の「 Local Gravity 」Yの値を変更することで、以下のようにオブジェクトごとに異なる重力の設定が可能です。
重力の方向を変えたいときには?
Edit → Project Settings… を選択し、開かれた設定タブの左側にある Physics の1番上にあるGravity のY軸を0に変更し、重力をかけたい方向(X,Z)に数値を入力することで変更できます。
重力を無効化するには?
Rigid Body のコンポーネントを外すことで、そのゲームオブジェクトの重力を無効化することが可能です。
またゲーム全体で重力を無効化するには、GravityのY軸の値を0にすることで可能となります。
以下の記事内のスクリプトを参考にすることで、ゲームの最中にGravity のY軸の値を0にし、重力を無効化させることが可能になりますので、参考にしてみてください。
まとめ
- Unity のソフト上で重力の設定や変更をするためには、Gravity と Rigid Body の項目について設定をする必要がある。
- Gravity ではゲーム全体の重力の設定をすることができる。
- 重力加速度を遅く変更するには、GravityのY軸の数値にデフォルトの数値より小さいマイナスの値(例:-1など)を入れることで設定することができる。
- Rigid Body を設定すると、重力だけでなく質量や抵抗などの物理演算も行うことができる。
- Rigid Body は、ゲームオブジェクトを選択し、Inspector → Add Component → 検索窓からRigid Body を検索し、選択することで設定することができる。
- 重力がかからないとき、ゲームオブジェクトが落ちないときは、以下の項目を確認する。
- Gravity に数値が入っているか
- Rigid Body のコンポーネントが設定されているか
- Rigid Body の Use Gravity のチェックが外れていないか
- スクリプトで特定のゲームオブジェクトのみ重力を変更することができる。
- スクリプトを特定のオブジェクトのみに追加し、Inspector → Gravity Controller ( Script ) の「 Local Gravity 」Yの値を変更する。
- 重力の方向は、Edit → Project Settings… を選択し、開かれた設定タブの左側にある Physics の1番上にあるGravity のY軸を0に変更し、重力をかけたい方向(X,Z)に数値を入力することで変更できる。
- 重力を無効化するには、Rigid Body のコンポーネントを外すか、Gravityの値を0にする。
Unity用アセット販売中!
当メディアで運営しているアセットショップ「NickNackHolic」にてUnity用のアセットを販売しております。
ゲーム制作やVRchat、Clusterなどで使用できる便利なアセットを販売しております。
一部無料のアセットもあるので、ぜひ覗いてみてください!
Nick Nack Holic
VRchatやゲームアセット、映像作品で使える「雑貨」を販売中