Unity-Rigidbody【刚体】组件-Rigidbody.AddForce的ForceMode 力的模式

ForceMode 力的模式

在unity中,Rigidbody.AddForce()实现对刚体物体施加力的效果,实现物体例如碰撞,爆炸等等效果
调用函数如下:

public void AddForce(Vector3 force, ForceMode mode = ForceMode.Force);
public void AddForce(float x, float y, float z, ForceMode mode = ForceMode.Force);

AddForce()函数有一个参数 ForceMode , 为枚举类型
Unity2017 API手册 力模式

  • Force 添加一个可持续力到刚体,使用它的质量
  • Acceleration 添加一个可持续加速度到刚体,忽略它的质量。
  • Impulse 添加一个瞬间冲击力到刚体 ,使用它的质量。( 爆炸或碰撞力量 )
  • VelocityChange 添加一个瞬间速度变化给刚体,忽略它的质量。

具体介绍如下:

在以下举例中均设刚体质量为m=2.0f,力向量为f=(10.0f,0.0f,0.0f)。

1 . ForceMode.Force:默认方式,使用刚体的质量计算,时间间隔以系统帧频间隔计算(默认值为0.02s)。

则由动量定理 f • t = m • v
可得:10 * 0.02 = 2.0 * v1,从而可得 v1=0.1 m/s,即每秒刚体在X轴上值增加0.1米

2 . ForceMode.Acceleration:忽略刚体的实际质量而采用默认值m = 1.0f,时间间隔以系统帧频间隔计算(默认值为0.02s)

f • t = 1.0 • v
可得:10 * 0.02 = 1.0 * v2,从而可得 v2=0.2 m/s,即每秒刚体在X轴上值增加0.2米

3 . ForceMode.Impulse:采用瞬间力作用方式,即默认 t = 1.0f,不再采用系统的帧频间隔

f • 1.0 = m • v
可得:10 * 1.0 = 2.0 * v3,从而可得 v3=5.0 m/s,即每秒刚体在X轴上值增加5.0米

4 . ForceMode.VelocityChange:忽略刚体的实际质量,采用默认值m = 1.0f,同时也忽略系统的实际帧频间隔,采用默认间隔 t = 1.0f

f • 1.0 = 1.0 • v
可得:10 * 1.0 = 1.0 * v4,从而可得 v4=10.0 m/s,即每秒刚体在X轴上值增加10.0米


参考文章链接
http://blog.csdn.net/u010133610/article/details/58601920

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值