2

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

我有gameobject一个rigidbody组件。

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

我知道如何在编辑 -> 项目设置 ->中将重力设置为向左拉......但是这个设置会将重力改变为所有刚体,这在我的情况下是一个问题。

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

4

1 回答 1

5

由于您正在制作 2D 游戏,我假设您的 GameObject 附加了 Rigidbody2D 组件。将其上的重力比例设置为 0。还将ConstantForce2D附加到您的游戏对象并在Force -> X中应用您的重力。要获得与重力相同的力,您必须将重力(可能为 9.81)乘以游戏对象的质量。如果您的自定义重力或游戏对象的质量不时发生变化,请确保在您的更新方法中进行计算,然后将其应用于 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;
}
于 2015-04-16T07:33:15.087 回答