如果Physics.gravity对场景中的所有刚体都有效,它是否有其他方法来设置Ground1和Ground2的不同重力?
没有其他方法可以设置Physics.gravity对不同物体的不同影响。 如果你只是想要非常简单的物理系统,你可以在Unity中推出自己有限的物理系统(如果你疯了,也可以推出一个完整的自定义物理系统)。另外,你也可以为你希望表现不同的物体添加力。
对于你希望以不同方式受到重力影响的物体,你需要在重力方向上施加一个额外的力来增加重力的影响,或者逆着重力的方向来减少重力的影响。 您还需要使用 ForceMode.Acceleration 来确保施力时不考虑质量。
请看。https:/docs.unity3d.comScriptReferenceRigidbody.AddForce.html。
而且。https:/docs.unity3d.comScriptReferenceForceMode.Acceleration.html。
是的,我想你可以改变这两个物体的重力比例,比如说2,然后这两个物体的physics.gravity就会变成2*原始physics.gravity。
是的!我想你可以改变这两个对象的重力比例,比如说2,然后这两个对象的physics.gravity将是2*原始physics.gravity。
重力默认由场景中的每个Rigidbody处理,但你可以通过以下操作禁用默认的重力。Rigidbody.useGravity = false;
这意味着你可以停用默认的重力,然后以你想要的方式对物体施加一个力(模拟重力)。
RigidBody.AddForce(Vector.down, ForceMode.Acceleration);
记住,你可以简单地乘以 Physics.gravity
由你想要的数字,甚至改变方向做类似。
[RequireComponent(typeof(Rigidbody))]
public class GravityDirectionChanger : MonoBehaviour
{
public enum GravityDirection
{
Up, Down, Forward, Backward, None
}
public static Dictionary<GravityDirection, Vector3> gravityDirectionDict = new Dictionary<GravityDirection, Vector3>
{
{ GravityDirection.Up, Vector3.up },
{ GravityDirection.Down, Vector3.down },
{ GravityDirection.Forward, Vector3.forward },
{ GravityDirection.Backward, Vector3.forward * -1 },
{ GravityDirection.None, Vector3.zero }
};
[SerializeField] private GravityDirection gravityDirection = GravityDirection.None;
private void FixedUpdate()
{
this.GetComponent<Rigidbody>().AddForce(gravityDirectionDict[gravityDirection], ForceMode.Acceleration);
}
}