【问题标题】:Horizontal gravity on a gameObject in UnityUnity中游戏对象的水平重力
【发布时间】:2015-06-22 09:54:53
【问题描述】:

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

我有一个 gameobject 和一个 rigidbody 组件。

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

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

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

【问题讨论】:

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


    【解决方案1】:

    由于您正在制作 2D 游戏,我假设您的 GameObject 附加了 Rigidbody2D 组件。将其上的重力比例设置为 0。同时将 ConstantForce2D 附加到您的 GameObject 并在 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-24
      • 2017-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多