Unity 中游戏对象的水平重力
Horizontal gravity on a gameObject in Unity
我正在制作一个简单的 2D 游戏。
我有一个带有 rigidbody
组件的 gameobject
。
标准刚体重力向下拉我的游戏对象,但我希望重力将游戏对象向左拉。
我知道如何在 edit -> 项目设置 ->...就我而言。
我只想为 1 个游戏对象设置重力。
由于您制作的是 2D 游戏,我假设您的游戏对象附加了一个 Rigidbody2D 组件。将重力比例设置为 0。同时将 ConstantForce2D 附加到您的 GameObject 并在 Force -> X 中应用您的重力。要获得与重力相同的力,您必须将重力(可能是 9.81)乘以游戏对象的质量。
如果您的自定义重力或 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;
}
我正在制作一个简单的 2D 游戏。
我有一个带有 rigidbody
组件的 gameobject
。
标准刚体重力向下拉我的游戏对象,但我希望重力将游戏对象向左拉。
我知道如何在 edit -> 项目设置 ->...就我而言。
我只想为 1 个游戏对象设置重力。
由于您制作的是 2D 游戏,我假设您的游戏对象附加了一个 Rigidbody2D 组件。将重力比例设置为 0。同时将 ConstantForce2D 附加到您的 GameObject 并在 Force -> X 中应用您的重力。要获得与重力相同的力,您必须将重力(可能是 9.81)乘以游戏对象的质量。 如果您的自定义重力或 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;
}