Unity 中游戏对象的水平重力

Horizontal gravity on a gameObject in Unity

我正在制作一个简单的 2D 游戏。

我有一个带有 rigidbody 组件的 gameobject

标准刚体重力向下拉我的游戏对象,但我希望重力将游戏对象向左拉。

我知道如何在 edit -> 项目设置 ->...就我而言。

我只想为 1 个游戏对象设置重力。

由于您制作的是 2D 游戏,我假设您的游戏对象附加了一个 Rigidbody2D 组件。将重力比例设置为 0。同时将 ConstantForce2D 附加到您的 GameObject 并在 Force -> X 中应用您的重力。要获得与重力相同的力,您必须将重力(可能是 9.81)乘以游戏对象的质量。 如果您的自定义重力或 GameObject 的质量不时发生变化,请确保在您的更新方法中进行计算,然后将其应用于 ConstantForce2D 组件。这可能看起来像这样:

Rigidbody2D playerRigidbody;
ConstantForce2D customGravity;

void Awake () {
    playerRigidbody = GetComponent<Rigidbody2D> ();
    customGravity = GetComponent<ConstantForce2D> ();

    float gravityForceAmount = playerRigidbody.mass * Physics2D.gravity.magnitude;
    customGravity.force = new Vector2 (-gravityForceAmount, 0); // gravity to the left
}

void Update () {
    if(mass or gravity changes)
        modify the constant force;
}