Unity-Rigidbody【刚体】组件-Rigidbody.AddForce的ForceMode 力的模式
2017-09-26 17:32
1481 查看
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 , 为枚举类型
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
相关文章推荐
- Unity 理解刚体(Rigidbody)和碰撞体(Collider)和触发器(Is Trigger)以及刚体休眠(Rigidbody Sleeping)
- Unity-Rigidbody【刚体】组件-Collision Detection碰撞检测模式
- Rigidbody.AddForce 添加力
- unity3D 使用rigidbody.AddForce(movement)
- Rigidbody.AddExplosionForce 添加爆炸力
- Rigidbody.AddExplosionForce 添加爆炸力
- Unity。。。刚体在c#脚本里调用rigidbody.freezePosition或者冻结任意一个轴或组合冻结
- Unity基础包 刚体FPS RigidbodyFirstPersonController 脚本研究
- Rigidbody.AddForce
- unity3D 使用rigidbody.AddForce(movement)
- unity, 不要试图用rigidbody.Sleep()停止rigidbody
- unity之刚体组件Rigidbody
- 物体的刚体组件Rigidbody component 详解
- Unity Rigidbody
- Unity14--物理系统--刚体、触发器、Force和Toque扭矩、恒力
- VMWare安装Ubuntu 12.04开启虚拟机的Unity Mode模式
- 【设计模式】使用unity实现模板模式(Template mode)
- unity collider rigidbody zz
- AddForceAtPosition方法:增加刚体点作用力
- Unity动态修改刚体(Rigidbody)的坐标、旋转冻结状态(constraints)