Unity中游戏对象的水平重力

Posted

技术标签:

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

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

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

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

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

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

【问题讨论】:

【参考方案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;

【讨论】:

以上是关于Unity中游戏对象的水平重力的主要内容,如果未能解决你的问题,请参考以下文章

Unity物理组件之刚体Rigidbody

转载 unity3d 理解刚体(Rigidbody)和碰撞体(Collider)以及触发器(Is Trigger)

Unity VR 自行实现的抓取功能包含激活物体上的重力

Unity 简单手机小游戏 - 3D重力滚球(文末源码)

是否可以在 UIDynamicKit 中模拟对象/ UIView 的重力?

公共静态 Dictionary<String,GameObject> 中的游戏对象在 Unity 中的场景更改时被销毁