Unityで物理演算を扱う際、Physics.gravityを使った重力の制御は基本的かつ重要な要素です。初心者の方がつまずきやすい部分を具体例とともに解説します。
ここでは、重力ベクトルの設定方法や掛け算の意味、向きの決め方について詳しく説明します。
Physics.gravityにVector3を使う理由
Physics.gravityはVector3型で表現されるため、x, y, zの各軸ごとの重力を個別に設定できます。例えば、Physics.gravity = new Vector3(0, -10, 0);のように書くことで、y方向にだけ下向きの重力を設定できます。
一方、Physics.gravity = Gravity * vector.normalized * gravityScale;のように書く場合、Vector3を計算で作るため、ベクトルの向きや大きさを自由に調整可能です。
掛け算の意味とgravityScaleの役割
Gravity * vector.normalized * gravityScaleは、重力の大きさと方向を組み合わせてPhysics.gravityに設定するための計算です。vector.normalizedは方向を示す単位ベクトルで、Gravityでスケール調整、gravityScaleで任意の倍率をかけています。
例えば、gravityScaleを2にすると、重力は通常の2倍になります。このように掛け算を行うことで、方向と強さを柔軟に制御できます。
重力の向きの決め方
vector.normalizedで重力の方向を決めています。vectorにはInput.GetAxisやキー入力による方向ベクトルが設定され、その正規化により単位ベクトルとして方向だけを取り出せます。
例として、vector.x = Input.GetAxis(“Horizontal”), vector.z = Input.GetAxis(“Vertical”), vector.y = -1.0fとすることで、プレイヤーの入力に応じて斜め方向や上下方向の重力を表現可能です。
単純なPhysics.gravityとの違い
Physics.gravity = new Vector3(0, -9.81f, 0);のように固定値を設定する場合、重力は常に一定方向・一定大きさになります。vectorを使った計算では、ユーザー入力やゲーム状況に応じて重力の方向や強さを動的に変えることができます。
この方法を使うことで、宇宙空間や特殊な物理演算が必要なゲームシーンでも柔軟に対応できます。
まとめ
UnityでPhysics.gravityを制御する場合、Vector3を使って重力ベクトルを定義し、掛け算で強さと方向を調整することが基本です。gravityScaleやvector.normalizedを活用することで、入力や状況に応じた動的な重力表現が可能になります。
固定値を使う場合は簡単ですが、方向や強さを自由に変更したい場合は計算による設定が有効です。これにより、初心者でもゲーム内でリアルな重力挙動を実現できます。


コメント