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中游戏对象的水平重力的主要内容,如果未能解决你的问题,请参考以下文章
转载 unity3d 理解刚体(Rigidbody)和碰撞体(Collider)以及触发器(Is Trigger)