Unity で 1 つの 3D オブジェクトの重力を変更するには、次の手順を実行します。
- 重力を制御するための新しい C# スクリプトを作成します。
まず、新しい C# スクリプト (例: GravityModifier.cs) を作成し、重力を変更する必要がある 3D オブジェクトにそれをアタッチします。スクリプトでは、Rigidbody コンポーネントを使用してオブジェクトの物理プロパティを制御できます。
using UnityEngine;
public class GravityModifier : MonoBehaviour
{
public float gravityScale = 1.0f; // 设置重力的缩放比例
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
if (rb == null)
{
Debug.LogError("Rigidbody component not found!");
}
}
void FixedUpdate()
{
// 修改物体的重力
Vector3 newGravity = Physics.gravity * gravityScale;
rb.AddForce(newGravity, ForceMode.Acceleration);
}
}
- スクリプトをオブジェクトにアタッチし、「Use Gravity」のチェックを外します。
作成した GravityModifier スクリプトを、重力を変更する必要がある 3D オブジェクトにアタッチします。Unity エディターでターゲット オブジェクトを選択し、スクリプトをインスペクター パネルの [コンポーネントの追加] ボックスにドラッグ アンド ドロップします。
- 重力サイズを調整します。
[インスペクター] パネルに、アタッチされた GravityModifier コンポーネントが表示されます。これで、gravityScale
フィールドの値を調整してオブジェクトの重力を制御できるようになりました。値を大きくするとオブジェクトの重力が増加し、値を小さくすると減少します。
このアプローチでは、固定タイム ステップごとに追加の力を加えることによって、重力を変更する効果を実際にシミュレートしていることに注意してください。より細かく制御したい場合は、カスタム物理エンジンなどの他の方法を使用するか、より高度な物理効果を得るために外部ライブラリを使用する必要がある場合があります。
忘れずにスクリプトを保存し、Unity エディターでシーンを実行して、変更の効果を確認してください。