Unity中游戏对象的水平重力

Loc*_* Le 2 c# rigid-bodies unity-game-engine game-physics gameobject

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

我有gameobject一个rigidbody组件.

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

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

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

gre*_*r89 5

由于您正在制作2D游戏,我假设您的GameObject附加了Rigidbody2D组件.对重力比例设置为0.另外附加ConstantForce2D你的游戏对象,并在应用您的重力力- > 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;
}
Run Code Online (Sandbox Code Playgroud)