Unity中游戏对象的水平重力

时间:2015-04-16 06:41:45

标签: c# unity3d game-physics gameobject rigid-bodies

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

我有gameobjectrigidbody组件。

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

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

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

1 个答案:

答案 0 :(得分:5)

由于您正在制作2D游戏,我假设您的GameObject附加了Rigidbody2D组件。将重力比例设置为0.还要将 ConstantForce2D 附加到GameObject,并将重力应用于 Force - > X 。要获得与重力相同的力量,您必须将重力(可能是9.81)乘以GameObject的质量。 如果您的自定义重力或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;
}