当前位置:   article > 正文

Unity 使用AddForce方法给刚体施加力详解_unity addforce

unity addforce

要给刚体施加力,我们可以用AddForce方法,它有4个重载方法:

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

  1. Rigidbody rb;
  2. Vector3 force = new Vector3(10f, 0f, 0f);
  3. rb.AddForce(force);

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

  1. Rigidbody rb;
  2. float xForce = 10f;
  3. float yForce = 0f;
  4. float zForce = 0f;
  5. rb.AddForce(xForce, yForce, zForce);

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

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

  • ForceMode.Force:施加一个持续的力,受质量mass影响。
  • ForceMode.Impulse:施加一个瞬间的冲击力,受质量mass影响。
  • ForceMode.Acceleration:施加一个持续的加速度,质量mass无影响。
  • ForceMode.VelocityChange:施加一个改变刚体速度的力,质量mass无影响。
  1. Rigidbody rb;
  2. void Start()
  3. {
  4. Vector3 force = new Vector3(0f, 5f, 0f);
  5. rb.AddForce(force, ForceMode.Impulse);//给刚体施加一个瞬间冲击力
  6. }

 

 4、AddForce(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无影响。
  1. Rigidbody rb;
  2. void Start()
  3. {
  4. float xForce = 0f;
  5. float yForce = 0f;
  6. float zForce = 20f;
  7. rb.AddForce(xForce, yForce, zForce, ForceMode.Acceleration); //给刚体上施加一个持续的加速度
  8. }

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

使用AddForce对刚体施加力,重点还是关注使用ForceMode参数不同模式得差异化,才能用起来得心应手。

这里模拟了个差异效果:

Unity使用AddForce方法给刚体施加力不同ForceMode参数参数的效果

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/89739?site
推荐阅读
相关标签
  

闽ICP备14008679号