【问题标题】: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;
}