Unity 使用AddRelativeForce方法给刚体施加力详解

本文介绍了Unity中AddRelativeForce方法,用于给刚体施加力,区分于AddForce。该方法有4种重载形式,包括按向量、分量和模式施加力,以及它们之间的区别,特别是力的方向会随物体位置变化。
摘要由CSDN通过智能技术生成

之前我们总结过使用AddForce方法给刚体施加力:Unity 使用AddForce方法给刚体施加力详解-CSDN博客

 本文总结另外一个方法AddRelativeForce,本质上它们区别不大,都是给刚体施加一个持续的力,唯一区别就是施加力时候使用的坐标系不一样。

AddForce方法使用的是世界坐标系,而AddRelativeForce方法使用的是相对坐标系。这样导致最直观的结果就是同样的力作用在同一个物体上力的方向可能会存在差异。

回归本文重点,继续了解AddRelativeForce方法,它也有4个重载方法:

1、AddRelativeForce(Vector3 force);使用Vector3类型参数,可以分别向刚体按Vector3对象指定x、y、z分量施加力。使用该方法会对刚体施加一个持续的力。下面的rb统一使用变量Rigidbody rb;

Vector3 force = new Vector3(10f, 0f, 0f);
rb.AddRelativeForce(force);

2、AddRelativeForce(float x, float y, float z);使用3个float类型参数,x、y、z分别指施加于x、y、z轴上的分量。使用该方法会对刚体施加一个持续的力。

float xForce = 10f;
float yForce = 0f;
float zForce = 0f;
rb.AddRelativeForce(xForce, yForce, zForce);

上面两个方法是等效的。只是使用参数类型不一样。

3、AddRelativeForce(Vector3 force, ForceMode mode);其中,参数force是施加的力的矢量,参数mode是一个枚举类型的参数,用于指定力的模式。模式有:

ForceMode.Force:施加一个持续的力,受质量mass影响。
ForceMode.Impulse:施加一个瞬间的冲击力,受质量mass影响。
ForceMode.Acceleration:施加一个持续的加速度,质量mass无影响。
ForceMode.VelocityChange:施加一个改变刚体速度的力,质量mass无影响。


void Start()
{
    Vector3 force = new Vector3(0f, 5f, 0f);
    rb.AddRelativeForce(force, ForceMode.Impulse);//给刚体施加一个瞬间冲击力
}

 4、AddRelativeForce(float x, float y, float z, ForceMode mode);其中,参数,x、y、z分别指施加于x、y、z轴上的分量。参数mode是一个枚举类型的参数,用于指定力的模式,模式有:

ForceMode.Force:施加一个持续的力,受质量mass影响。
ForceMode.Impulse:施加一个瞬间的冲击力,受质量mass影响。
ForceMode.Acceleration:施加一个持续的加速度,质量mass无影响。
ForceMode.VelocityChange:施加一个改变刚体速度的力,质量mass无影响。

void Start()
{
    float xForce = 0f;
    float yForce = 0f;
    float zForce = 20f;
    rb.AddRelativeForce(xForce, yForce, zForce, ForceMode.Acceleration); //给刚体上施加一个持续的加速度
}

 3、4两个重载方法也是等效的,只是使用force参数类型不一样。

使用该方法施加力给刚体效果如下:

Unity 使用AddRelativeForce方法给刚体施加力效果

我们会发现,使用该方法,施加力是相对于自身坐标系统,所以当物体体位变了,调用同样的方法力时作用方向也改变了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不在同一频道上的呆子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值