Bullet之了解Force Torque Impulse
Bullet之了解Force Torque Impulse
分类: cocos2d-x 物理引擎
2015-01-14 00:01
167人阅读
评论(0)
收藏
举报
cocos2dx
bullet
物理引擎
在了解ForceImpulseTorque之前,先来看看setLinearVelocity,setAngularVelocity 一个是线速度,一个是角速度 理解起来是很简单的设置body的线速度和角速度
现在来了解Force
applyCentralForce给body提供一个作用力,查看源码
可知在body原有作用力的基础上再加force*m_linearFactor,至于这个m_linearFactor
就是对施加的力三个方向各缩放一定的倍数。
applyForce同样是给body提供一个作用力,
向量的叉乘得到垂直于这两个向量的另一个向量 rel_pos.cross(force*m_linearFactor)可以得到扭转力 假设force=(0,-10),rel_pos=(0,1,0), Force*rel_pos=(-10,0),得到绕x轴的扭转力
记住applyForce并不是单独施加力
现在来看Torque 前面的applyForce已经提到过,提供一个扭转力
假设torque=(10,5,-10) 就是绕torque.normalize这个轴旋转。
现在来了解Impulse
把所有的Impulse都列了出来,关于冲量的介绍可以看百科。 既然要用,简单理解impulse*质量的倒数=增加的速度(线速度或者角速度) 看源码就知道了applyCentralImpulse,applyImpulse就跟applyCenterForce和applyForce差不多
如果要用Force使body移动就要每帧都去施加力,Impulse是瞬间提供一个速度,只在需要时施加 对于set****Factor只有在apply***时才使用,而set***Velocity不使用。
voidclearForces() 清除施加的Force和Torque,但body还是会受重力的影响。
_ballBody->setActivationState(ACTIVE_TAG); 当然在施加作用力时,要将body的状态设置为活动,只有活动的对象才能被模拟,这也是优化的一个方面。
没有源码,没有示例,只是简单了解,不足很多,只为学习。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |